#!/bin/bash set -euo pipefail get_app() { mix run --no-start -e "Mix.Project.config[:app] |> IO.puts" | tail -1 } get_version() { mix run --no-start -e "Mix.Project.config[:version] |> IO.puts" | tail -1 } APP_NAME=`get_app` APP_VERSION=`get_version` OS_VERSION=${OS_VERSION?not set} MIX_ENV=${MIX_ENV-prod} ROOT_DIR=`pwd` SOURCE_DIR=$ROOT_DIR BUILD_DIR=$ROOT_DIR/priv/build/ DOCKER_DIR=$BUILD_DIR/$OS_VERSION DOCKER_IMAGE_VERSION=`echo $APP_VERSION | sed "s#+#-#"` DOCKER_IMAGE_TAG=$APP_NAME-$OS_VERSION:$DOCKER_IMAGE_VERSION build_image() { docker build -t $DOCKER_IMAGE_TAG $DOCKER_DIR } build_binary() { docker run -e SOURCE_DIR=/app \ -e MIX_ENV=$MIX_ENV \ -e DOCKER_IMAGE_TAG=$DOCKER_IMAGE_TAG \ -v $ROOT_DIR:/app \ $DOCKER_IMAGE_TAG \ /app/priv/build/build.sh } build_image build_binary