ottertune/docker/create-docker-compose.sh

152 lines
3.1 KiB
Bash
Executable File

#!/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'."