summaryrefslogtreecommitdiff
path: root/deploy.sh
blob: 63104a48e9fc607f251b949a8daf20af23723c9e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash

datestamp=$(date +%Y%m%d-%H%M)
env_file=.env.prod
project_name=chessh
port=8080
ssh_port=34355
host=0.0.0.0

container_names=("chessh-redis" "chessh-database" "chessh-server" "chessh-frontend")

for name in ${container_names[@]}; do
  docker stop $name
  docker rm $name
done

# Create network for chessh
docker network ls | grep -q $project_name || docker network create --driver bridge $project_name

# Create redis volume if it does not exist
docker volume ls | grep -q $project_name-redisdata || docker volume create $project_name-redisdata

# Then start the redis container
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

# Start postgres container
# Firstly create pg volume if it does not exist
docker volume ls | grep -q $project_name-pgdata || docker volume create $project_name-pgdata

# Then run the pg container
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

# Start backend container
# Check if running; if so, stop, and rename
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

# Start frontend container
# Check if running; if so, stop, and rename
docker run \
  -d \
  --restart unless-stopped \
  --env-file $env_file \
  --network $project_name \
  --name $project_name-frontend \
  --publish "${host}:${port}:80/tcp" \
  --net-alias frontend \
  chessh/frontend