152 lines
3.1 KiB
Bash
152 lines
3.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
|
||
|
if [ -z "$BACKEND" ]
|
||
|
then
|
||
|
echo "Variable 'BACKEND' must be set."
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
DEBUG="${DEBUG:-true}"
|
||
|
ADMIN_PASSWORD="${ADMIN_PASSWORD:-changeme}"
|
||
|
DB_NAME="${DB_NAME:-ottertune}"
|
||
|
DB_PASSWORD="${DB_PASSWORD:-ottertune}"
|
||
|
|
||
|
if [ "$BACKEND" = "mysql" ]; then
|
||
|
DB_USER="${DB_USER:-root}"
|
||
|
DB_PORT="${DB_PORT:-3306}"
|
||
|
else
|
||
|
DB_USER="${DB_USER:-postgres}"
|
||
|
DB_PORT="${DB_PORT:-5432}"
|
||
|
fi
|
||
|
|
||
|
WEB_ENTRYPOINT="${WEB_ENTRYPOINT:-start.sh}"
|
||
|
|
||
|
file="$(test -z "$1" && echo "docker-compose.$BACKEND.yml" || echo "$1")"
|
||
|
|
||
|
|
||
|
cat > $file <<- EOM
|
||
|
version: "3"
|
||
|
services:
|
||
|
|
||
|
web:
|
||
|
build:
|
||
|
context: ../
|
||
|
dockerfile: ./docker/Dockerfile.web
|
||
|
image: ottertune-web
|
||
|
container_name: web
|
||
|
expose:
|
||
|
- "8000"
|
||
|
ports:
|
||
|
- "8000:8000"
|
||
|
links:
|
||
|
- backend
|
||
|
- rabbitmq
|
||
|
depends_on:
|
||
|
- backend
|
||
|
- rabbitmq
|
||
|
environment:
|
||
|
DEBUG: '$DEBUG'
|
||
|
ADMIN_PASSWORD: '$ADMIN_PASSWORD'
|
||
|
BACKEND: '$BACKEND'
|
||
|
DB_NAME: '$DB_NAME'
|
||
|
DB_USER: '$DB_USER'
|
||
|
DB_PASSWORD: '$DB_PASSWORD'
|
||
|
DB_HOST: 'backend'
|
||
|
DB_PORT: '$DB_PORT'
|
||
|
MAX_DB_CONN_ATTEMPTS: 30
|
||
|
working_dir: /app/website
|
||
|
entrypoint: $WEB_ENTRYPOINT
|
||
|
labels:
|
||
|
NAME: "ottertune-web"
|
||
|
networks:
|
||
|
- ottertune-net
|
||
|
|
||
|
driver:
|
||
|
build:
|
||
|
context: ../
|
||
|
dockerfile: ./docker/Dockerfile.driver
|
||
|
image: ottertune-driver
|
||
|
container_name: driver
|
||
|
depends_on:
|
||
|
- web
|
||
|
environment:
|
||
|
DEBUG: '$DEBUG'
|
||
|
working_dir: /app/driver
|
||
|
labels:
|
||
|
NAME: "ottertune-driver"
|
||
|
networks:
|
||
|
- ottertune-net
|
||
|
|
||
|
rabbitmq:
|
||
|
image: "rabbitmq:3-management"
|
||
|
container_name: rabbitmq
|
||
|
restart: always
|
||
|
hostname: "rabbitmq"
|
||
|
environment:
|
||
|
RABBITMQ_DEFAULT_USER: "guest"
|
||
|
RABBITMQ_DEFAULT_PASS: "guest"
|
||
|
RABBITMQ_DEFAULT_VHOST: "/"
|
||
|
expose:
|
||
|
- "15672"
|
||
|
- "5672"
|
||
|
ports:
|
||
|
- "15673:15672"
|
||
|
- "5673:5672"
|
||
|
labels:
|
||
|
NAME: "rabbitmq"
|
||
|
networks:
|
||
|
- ottertune-net
|
||
|
|
||
|
EOM
|
||
|
|
||
|
|
||
|
cat >> $file <<- EOM
|
||
|
backend:
|
||
|
container_name: backend
|
||
|
restart: always
|
||
|
EOM
|
||
|
|
||
|
|
||
|
if [ "$BACKEND" = "mysql" ]; then
|
||
|
|
||
|
cat >> $file <<- EOM
|
||
|
image: mysql:5.7
|
||
|
environment:
|
||
|
MYSQL_USER: '$DB_USER'
|
||
|
MYSQL_ROOT_PASSWORD: '$DB_PASSWORD'
|
||
|
MYSQL_PASSWORD: '$DB_PASSWORD'
|
||
|
MYSQL_DATABASE: '$DB_NAME'
|
||
|
expose:
|
||
|
- "3306"
|
||
|
ports:
|
||
|
- "3306:3306"
|
||
|
EOM
|
||
|
else
|
||
|
cat >> $file <<- EOM
|
||
|
image: postgres:9.6
|
||
|
environment:
|
||
|
POSTGRES_PASSWORD: '$DB_PASSWORD'
|
||
|
POSTGRES_USER: '$DB_USER'
|
||
|
POSTGRES_DB: '$DB_NAME'
|
||
|
expose:
|
||
|
- "5432"
|
||
|
ports:
|
||
|
- "5432:5432"
|
||
|
EOM
|
||
|
fi
|
||
|
|
||
|
cat >> $file <<- EOM
|
||
|
labels:
|
||
|
NAME: "ottertune-backend"
|
||
|
networks:
|
||
|
- ottertune-net
|
||
|
|
||
|
networks:
|
||
|
ottertune-net:
|
||
|
driver: bridge
|
||
|
EOM
|
||
|
|
||
|
echo "Saved docker-compose file to '$file'."
|
||
|
|