diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-03-04 19:07:57 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-03-04 19:07:57 +0100 |
| commit | 2b5af5146d7c22eac4a5150a038a05620ec5b8a3 (patch) | |
| tree | f534dd82d0f16de158a783e39082dfe9a00da85a | |
| parent | 79e3429ea8fb590f82b11f2b19a26427f2d1da4f (diff) | |
build(docker): make Docker deployement compatible with Docker Swarm
I also added a custom script to deploy the services with Docker Swarm.
Without it, Docker cannot read the `.env` file. Since I'm using a
variable to define the registry, the script is required.
| -rw-r--r-- | .env.example | 1 | ||||
| -rwxr-xr-x | bin/deploy.sh | 27 | ||||
| -rw-r--r-- | docker-compose.yml | 2 |
3 files changed, 30 insertions, 0 deletions
diff --git a/.env.example b/.env.example index 4d98551..dbfb664 100644 --- a/.env.example +++ b/.env.example @@ -24,6 +24,7 @@ NEXT_PUBLIC_GRAPHQL_API="https://$APP_BACKEND_DOMAIN$APP_GRAPHQL_ENDPOINT" #NEXT_PUBLIC_STAGING_GRAPHQL_API="https://$APP_STAGING_BACKEND_DOMAIN$APP_STAGING_GRAPHQL_ENDPOINT" # Common +APP_DOCKER_REGISTRY_DOMAIN="127.0.0.1:5000" APP_AUTHOR_NAME="Your Name" APP_AUTHOR_EMAIL="your@email.com" APP_AUTHOR_URL="https://www.yourWebsite.com/" diff --git a/bin/deploy.sh b/bin/deploy.sh new file mode 100755 index 0000000..31b8cdb --- /dev/null +++ b/bin/deploy.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env sh +# +# deploy.sh +# +# Deploy both services using Docker swarm. +# +# The registry domain is set in dotenv file but docker stack cannot read it. +# So a custom deploy script is required to load .env first. +# See: https://github.com/moby/moby/issues/29133 + +loadenvs() { + set -a && . ./.env && set +a +} + +error() { + printf "Error: stack name not defined.\n" + printf "Usage: sh deploy.sh your-stack-name\n" + exit 1 +} + +deploy() { + [ $# -ne 1 ] && error + loadenvs + docker stack deploy -c docker-compose.yml "$1" +} + +deploy "$@" diff --git a/docker-compose.yml b/docker-compose.yml index 8d0ad57..791f1ef 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ version: '3.8' services: apcom: + image: ${APP_DOCKER_REGISTRY_DOMAIN}/apcom build: context: . dockerfile: Dockerfile @@ -16,6 +17,7 @@ services: - '${APP_DOCKER_PORT:-3000}:${APP_DOCKER_PORT:-3000}' restart: always apcom-staging: + image: ${APP_DOCKER_REGISTRY_DOMAIN}/apcom-staging build: context: . dockerfile: Dockerfile |
