summaryrefslogtreecommitdiff
path: root/buildscripts/docker
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/docker')
-rwxr-xr-xbuildscripts/docker/build.sh14
-rwxr-xr-xbuildscripts/docker/deploy.sh57
2 files changed, 71 insertions, 0 deletions
diff --git a/buildscripts/docker/build.sh b/buildscripts/docker/build.sh
new file mode 100755
index 0000000..9852f20
--- /dev/null
+++ b/buildscripts/docker/build.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+env_file=../../.env.prod
+
+export $(cat $env_file | xargs)
+
+docker build ../.. -t chessh/server
+
+cd front
+docker build \
+ --build-arg REACT_APP_DISCORD_OAUTH=${REACT_APP_DISCORD_OAUTH} \
+ --build-arg REACT_APP_SSH_SERVER=${REACT_APP_SSH_SERVER} \
+ --build-arg REACT_APP_SSH_PORT=${REACT_APP_SSH_PORT} \
+ . -t chessh/frontend
diff --git a/buildscripts/docker/deploy.sh b/buildscripts/docker/deploy.sh
new file mode 100755
index 0000000..8299aea
--- /dev/null
+++ b/buildscripts/docker/deploy.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+
+datestamp=$(date +%Y%m%d-%H%M)
+env_file=../../.env.prod
+project_name=chessh
+container_names=("chessh-redis" "chessh-database" "chessh-server" "chessh-frontend")
+
+export $(cat $env_file | xargs)
+
+for name in ${container_names[@]}; do
+ docker stop $name
+ docker rm $name
+done
+
+docker network ls | grep -q $project_name || docker network create --driver bridge $project_name
+docker volume ls | grep -q $project_name-redisdata || docker volume create $project_name-redisdata
+
+docker run \
+ -d \
+ --restart unless-stopped \
+ --env-file $env_file \
+ --network $project_name \
+ --name $project_name-redis \
+ --net-alias redis \
+ --volume $project_name-redisdata:/data/ \
+ redis
+
+docker volume ls | grep -q $project_name-pgdata || docker volume create $project_name-pgdata
+docker run \
+ -d \
+ --restart unless-stopped \
+ --env-file $env_file \
+ --network $project_name \
+ --name $project_name-database \
+ --net-alias database \
+ --volume $project_name-pgdata:/var/lib/postgresql/data/ \
+ postgres
+
+docker run \
+ -d \
+ --restart unless-stopped \
+ --env-file $env_file \
+ --network $project_name \
+ --name $project_name-server \
+ --publish "${HOST}:${SSH_PORT}:${SSH_PORT}/tcp" \
+ --net-alias server \
+ chessh/server
+
+docker run \
+ -d \
+ --restart unless-stopped \
+ --env-file $env_file \
+ --network $project_name \
+ --name $project_name-frontend \
+ --publish "${HOST}:${WEB_PORT}:80/tcp" \
+ --net-alias frontend \
+ chessh/frontend