Created
February 21, 2020 17:46
-
-
Save Nitrino/2faab487ba12d59327d27d9b6976fdcf to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ---- Build Stage ---- | |
# The version of Alpine to use for the final image | |
# This should match the version of Alpine that the builder image uses | |
ARG ALPINE_VERSION=3.10 | |
FROM elixir:1.9.4-alpine AS builder | |
# The following are build arguments used to change variable parts of the image. | |
# The name of your application/release (required) | |
ARG APP_NAME=sip_gateway | |
# The version of the application we are building (required) | |
ARG APP_VSN=0.1.0 | |
# The environment to build with | |
ARG MIX_ENV=prod | |
# Set this to true if this release is not a Phoenix app | |
ARG SKIP_PHOENIX=true | |
# If you are using an umbrella project, you can change this | |
# argument to the directory the Phoenix app is in so that the assets | |
# can be built | |
ARG PHOENIX_SUBDIR=. | |
ENV SKIP_PHOENIX=${SKIP_PHOENIX} \ | |
APP_NAME=${APP_NAME} \ | |
APP_VSN=${APP_VSN} \ | |
MIX_ENV=${MIX_ENV} | |
# By convention, /opt is typically used for applications | |
WORKDIR /opt/app | |
# This step installs all the build tools we'll need | |
RUN apk update && \ | |
apk upgrade --no-cache && \ | |
apk add --no-cache \ | |
nodejs \ | |
npm \ | |
git \ | |
build-base && \ | |
mix local.rebar --force && \ | |
mix local.hex --force | |
# This copies our app source code into the build container | |
COPY . . | |
RUN mix do deps.get, deps.compile, compile | |
# This step builds assets for the Phoenix app (if there is one) | |
# If you aren't building a Phoenix app, pass `--build-arg SKIP_PHOENIX=true` | |
# This is mostly here for demonstration purposes | |
RUN if [ ! "$SKIP_PHOENIX" = "true" ]; then \ | |
cd ${PHOENIX_SUBDIR}/assets && \ | |
npm install && \ | |
npm run deploy && \ | |
cd .. && \ | |
mix phx.digest; \ | |
fi | |
RUN \ | |
mkdir -p /opt/built && \ | |
mix release && \ | |
cp -a _build/${MIX_ENV}/rel/${APP_NAME}/ /opt/built | |
# ---- Application Stage ---- | |
# From this line onwards, we're in a new image, which will be the image used in production | |
FROM alpine:${ALPINE_VERSION} | |
# The name of your application/release (required) | |
ARG APP_NAME=sip_gateway | |
RUN apk update && \ | |
apk add --no-cache \ | |
bash \ | |
openssl-dev | |
WORKDIR /opt/app | |
COPY --from=builder /opt/built/sip_gateway . | |
RUN apk add --no-cache libstdc++ | |
# HEALTHCHECK CMD ["curl", "--fail", "http://localhost/api/ping"] | |
RUN chmod -R 755 /opt/app | |
CMD ["./bin/sip_gateway", "start"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment