Files
firezone/Dockerfile.dev
Jamil dd67baf629 Build docker image in build workflow; Update automatic install to use Docker (#983)
* Test docker prod build in CI

* Need uses

* Set build-args

* Split builds

* Fix build-args format

* wtf

* hmmm

* Jeebus

* build version based on drafted release

* Build multi-platform images

* Only build for supported platforms

* Use newer OTP fingers crossed

* Use OTP 24 for arm64

* Finalize test build of Docker image

* Update comment

* Bump to OTP 25.1

* Use proper ver

* D'oh proper sha

* Use OTP 24 and install python for node build

* Use new Docker base

* Use python3

* Use newly-built base images with other platform support

* Don't build for ppc64le and s390x

* Build only for amd64/arm64

* Don't rebuild on publish; simply copy

* See where the image is being pushed

* Remove echo

* Add docker updates

* Match platforms from base image

* Use docker-compose over docker compose

* Use our own base

* we need python3

* use consistent service name

* trim trailing slash from external_url

* Build for latest tag in staging
2022-09-29 08:20:32 -05:00

56 lines
1.4 KiB
Docker

# This Dockerfile builds a development image to use for local development work
FROM firezone/elixir:1.14.0-otp-25.1
# Install dev dependencies / convenience tools
RUN apk add \
nodejs \
npm \
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 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/package-lock.json /var/app/apps/fz_http/assets/package-lock.json
RUN npm install --prefix apps/fz_http/assets
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 --only dev, deps.compile --only dev, compile --only dev
RUN mix do deps.get --only test, deps.compile --only test, compile --only test
COPY apps /var/app/apps
COPY config /var/app/config
COPY scripts/dev_start.sh /var/app/dev_start.sh
EXPOSE 4000 51820/udp
CMD ["/var/app/dev_start.sh"]