| |
| |
|
|
|
|
| |
| FROM hexpm/elixir:1.20.2-erlang-28.5.0.3-alpine-3.22.5@sha256:8875407828c1b789485f9fcc6006e1ace39bb073b0467a95df3a3905d8d86d30 AS buildcontainer |
|
|
| ARG MIX_ENV=ce |
|
|
| |
| ENV MIX_ENV=$MIX_ENV |
| ENV NODE_ENV=production |
| ENV NODE_OPTIONS=--openssl-legacy-provider |
|
|
| |
| |
| ARG ERL_FLAGS |
| ENV ERL_FLAGS=$ERL_FLAGS |
|
|
| RUN mkdir /app |
| WORKDIR /app |
|
|
| |
| RUN apk add --no-cache git "nodejs-current=23.11.1-r0" yarn npm python3 ca-certificates wget gnupg make gcc libc-dev brotli |
|
|
| COPY mix.exs ./ |
| COPY mix.lock ./ |
| COPY config ./config |
| RUN mix local.hex --force && \ |
| mix local.rebar --force && \ |
| mix deps.get --only ${MIX_ENV} && \ |
| mix deps.compile |
|
|
| COPY assets/package.json assets/package-lock.json ./assets/ |
| COPY tracker/package.json tracker/package-lock.json ./tracker/ |
|
|
| RUN npm install --prefix ./assets && \ |
| npm install --prefix ./tracker |
|
|
| COPY assets ./assets |
| COPY tracker ./tracker |
| COPY priv ./priv |
| COPY lib ./lib |
| COPY extra ./extra |
|
|
| RUN npm run deploy --prefix ./tracker && \ |
| mix assets.deploy && \ |
| mix phx.digest priv/static && \ |
| mix download_country_database && \ |
| mix sentry.package_source_code |
|
|
| WORKDIR /app |
| COPY rel rel |
| RUN mix release plausible |
|
|
| |
| FROM alpine:3.22.5@sha256:14358309a308569c32bdc37e2e0e9694be33a9d99e68afb0f5ff33cc1f695dce |
| LABEL maintainer="plausible.io <hello@plausible.io>" |
|
|
| ARG BUILD_METADATA={} |
| ENV BUILD_METADATA=$BUILD_METADATA |
| ENV LANG=C.UTF-8 |
| ARG MIX_ENV=ce |
| ENV MIX_ENV=$MIX_ENV |
|
|
| RUN adduser -S -H -u 999 -G nogroup plausible |
|
|
| RUN apk upgrade --no-cache |
| RUN apk add --no-cache openssl ncurses libstdc++ libgcc ca-certificates \ |
| && if [ "$MIX_ENV" = "ce" ]; then apk add --no-cache certbot; fi |
|
|
| COPY --from=buildcontainer --chmod=555 /app/_build/${MIX_ENV}/rel/plausible /app |
| COPY --chmod=755 ./rel/docker-entrypoint.sh /entrypoint.sh |
|
|
| |
| |
| RUN mkdir -p /var/lib/plausible && chmod ugo+rw -R /var/lib/plausible |
| |
| USER 999 |
| WORKDIR /app |
| ENV LISTEN_IP=0.0.0.0 |
| ENV PORT=7860 |
| ENTRYPOINT ["/entrypoint.sh"] |
| EXPOSE 7860 |
| ENV DEFAULT_DATA_DIR=/var/lib/plausible |
| VOLUME /var/lib/plausible |
| CMD ["run"] |
|
|
|
|