# This Dockerfile builds a development image to use for local development work FROM firezone/elixir:1.14.2-otp-25.1.2 # Install dev dependencies / convenience tools RUN apk add \ yarn \ build-base \ git \ python3 \ curl \ net-tools \ iproute2 \ nftables \ inotify-tools \ ca-certificates \ sudo \ nodejs WORKDIR /var/app ARG GIT_SHA=DEV ARG MIX_ENV=dev ARG DATABASE_URL ENV GIT_SHA=$GIT_SHA ENV MIX_ENV=$MIX_ENV ENV DATABASE_URL=$DATABASE_URL RUN mix local.hex --force && mix local.rebar --force COPY apps/fz_common/mix.exs /var/app/apps/fz_common/mix.exs COPY apps/fz_http/mix.exs /var/app/apps/fz_http/mix.exs COPY apps/fz_vpn/mix.exs /var/app/apps/fz_vpn/mix.exs COPY apps/fz_wall/mix.exs /var/app/apps/fz_wall/mix.exs COPY mix.exs /var/app/mix.exs COPY mix.lock /var/app/mix.lock RUN mix do deps.get, deps.compile, compile # Copy more granular, dependency management files first to prevent # busting the Docker build cache unnecessarily COPY apps/fz_http/assets/package.json /var/app/apps/fz_http/assets/package.json COPY apps/fz_http/assets/local_modules /var/app/apps/fz_http/assets/local_modules COPY apps/fz_http/assets/yarn.lock /var/app/apps/fz_http/assets/yarn.lock RUN cd apps/fz_http/assets && yarn install COPY config /var/app/config COPY apps /var/app/apps RUN cd apps/fz_http && mix phx.gen.cert COPY scripts/dev_start.sh /var/app/dev_start.sh EXPOSE 51820/udp CMD ["/var/app/dev_start.sh"]