FROM alpine:latest AS tz-prep ARG TZ=UTC ENV TZ=${TZ} RUN apk add --no-cache tzdata \ && mkdir -p /output/etc \ && mkdir -p /output/usr/share \ && cp -r /usr/share/zoneinfo /output/usr/share/zoneinfo \ && ln -sf /usr/share/zoneinfo/${TZ} /output/etc/localtime \ && mkdir -p /output/etc/ssl/certs \ && cp /etc/ssl/certs/ca-certificates.crt /output/etc/ssl/certs/ca-certificates.crt # Scratch Final container FROM scratch AS scratch-final ARG TZ=UTC ENV TZ=${TZ} # Copy timezone data and localtime from tz-prep COPY --from=tz-prep /output/usr/share/zoneinfo /usr/share/zoneinfo COPY --from=tz-prep /output/etc/localtime /etc/localtime COPY --from=tz-prep /output/etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt # RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime WORKDIR /app COPY ./tuliprox ./ COPY ./web ./web COPY ./resources ./resources CMD ["/app/tuliprox", "-s", "-p", "/app/config"] # Alpine Final container FROM alpine:latest AS alpine-final ARG TZ=UTC ENV TZ=${TZ} RUN apk add --no-cache bash curl strace tcpdump bind-tools nano ca-certificates tini # Copy timezone data and localtime from tz-prep COPY --from=tz-prep /output/usr/share/zoneinfo /usr/share/zoneinfo COPY --from=tz-prep /output/etc/localtime /etc/localtime COPY --from=tz-prep /output/etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt RUN ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime WORKDIR /app COPY ./tuliprox ./ COPY ./web ./web COPY ./resources ./resources # config should be mounted as volume # COPY ./config ./config ENTRYPOINT ["/sbin/tini", "--", "/app/tuliprox"] CMD ["-s", "-p", "/app/config"]