Files
personal-servers/reverse_proxy/Dockerfile

37 lines
1.1 KiB
Docker

FROM alpine:latest AS builder
WORKDIR /app
COPY . ./
# This is where one could build the application code as well.
FROM alpine:latest AS tailscale
WORKDIR /app
COPY . ./
ENV TSFILE=tailscale_1.88.3_amd64.tgz
RUN wget https://pkgs.tailscale.com/stable/${TSFILE} && tar xzf ${TSFILE} --strip-components=1
COPY . ./
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
FROM alpine:latest
RUN apk update && apk add --no-cache ca-certificates nginx goaccess curl
# Copy binary to production image
COPY --from=builder /app/start.sh /app/start.sh
COPY --from=tailscale /app/tailscaled /app/tailscaled
COPY --from=tailscale /app/tailscale /app/tailscale
RUN mkdir -p /var/run/tailscale /var/cache/tailscale /var/lib/tailscale /usr/share/nginx/html
# Set aggressive Go GC settings for Tailscale to reduce memory usage
ENV GOGC=10
ENV GOMEMLIMIT=100MiB
COPY nginx.conf /etc/nginx/http.d/nginx.conf
COPY custom_50x.html /usr/share/nginx/html/
COPY goaccess.sh /app/goaccess.sh
COPY .htpasswd /etc/nginx/.htpasswd
# Run on container startup.
EXPOSE 8080
CMD ["/app/start.sh"]