|
1 | | -# The Dockerfile for build localhost source, not git repo |
2 | | -FROM debian:bookworm AS builder |
| 1 | +FROM python:3.12-slim-bookworm AS builder |
3 | 2 |
|
4 | 3 | LABEL maintainer="cppla <https://cpp.la>" |
5 | 4 |
|
6 | | -RUN apt-get update -y && apt-get -y install gcc g++ make libcurl4-openssl-dev |
| 5 | +RUN sed -i 's|http://deb.debian.org|https://deb.debian.org|g' /etc/apt/sources.list.d/debian.sources \ |
| 6 | + && apt-get -o Acquire::Retries=3 update -y \ |
| 7 | + && apt-get install -y --no-install-recommends gcc g++ make libcurl4-openssl-dev ca-certificates \ |
| 8 | + && rm -rf /var/lib/apt/lists/* |
7 | 9 |
|
8 | | -COPY . . |
| 10 | +COPY server/ /server/ |
9 | 11 |
|
10 | 12 | WORKDIR /server |
11 | 13 |
|
12 | | -RUN make -j |
13 | | -RUN pwd && ls -a |
| 14 | +RUN make -j && strip /server/sergate |
14 | 15 |
|
15 | | -# glibc env run |
16 | | -FROM nginx:latest |
| 16 | +FROM debian:bookworm-slim |
17 | 17 |
|
18 | | -RUN mkdir -p /ServerStatus/server/ && ln -sf /dev/null /var/log/nginx/access.log && ln -sf /dev/null /var/log/nginx/error.log |
| 18 | +COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt |
| 19 | +RUN sed -i 's|http://deb.debian.org|https://deb.debian.org|g' /etc/apt/sources.list.d/debian.sources \ |
| 20 | + && apt-get -o Acquire::Retries=3 update -y \ |
| 21 | + && apt-get install -y --no-install-recommends nginx-light python3 openssl libcurl4 libstdc++6 tzdata \ |
| 22 | + && rm -rf /var/lib/apt/lists/* \ |
| 23 | + && mkdir -p /ServerStatus/server/ \ |
| 24 | + && ln -sf /dev/null /var/log/nginx/access.log \ |
| 25 | + && ln -sf /dev/null /var/log/nginx/error.log \ |
| 26 | + && rm -f /etc/nginx/sites-enabled/default |
19 | 27 |
|
20 | | -COPY --from=builder server /ServerStatus/server/ |
21 | | -COPY --from=builder web /usr/share/nginx/html/ |
| 28 | +COPY --from=builder /server/sergate /ServerStatus/server/sergate |
| 29 | +COPY server/config.json /ServerStatus/server/config.json |
| 30 | +COPY server/manage_api.py /ServerStatus/server/manage_api.py |
| 31 | +COPY server/entrypoint-server.sh /ServerStatus/server/entrypoint-server.sh |
| 32 | +COPY web /usr/share/nginx/html/ |
| 33 | +COPY server/nginx-serverstatus.conf /etc/nginx/conf.d/default.conf |
| 34 | + |
| 35 | +RUN chmod +x /ServerStatus/server/entrypoint-server.sh |
22 | 36 |
|
23 | | -# china time |
24 | 37 | ENV TZ=Asia/Shanghai |
25 | 38 | RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone |
26 | 39 |
|
27 | 40 | EXPOSE 80 35601 |
28 | | -HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD curl --fail http://localhost:80 || bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)' |
29 | | -CMD ["sh", "-c", "/etc/init.d/nginx start && /ServerStatus/server/sergate --config=/ServerStatus/server/config.json --web-dir=/usr/share/nginx/html"] |
| 41 | +HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD python3 -c "import os,urllib.request; pid=int(open('/tmp/serverstatus-sergate.pid').read().strip()); os.kill(pid,0); urllib.request.urlopen('http://127.0.0.1/',timeout=2).read(1)" |
| 42 | +CMD ["/ServerStatus/server/entrypoint-server.sh"] |
0 commit comments