diff --git a/.gitignore b/.gitignore index 0032a92..1525f52 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ -docker.env - +.DS_Store .idea - .vscode - -.DS_Store \ No newline at end of file +docker.env +docker.env.* diff --git a/docker-compose.yml b/docker-compose.yml index 738c443..99e6457 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3" services: app: container_name: basedash-app @@ -10,20 +10,20 @@ services: condition: service_healthy env_file: ./docker.env ports: - - "5000:5000" + - 5000:5000 restart: unless-stopped rabbitmq: image: rabbitmq:3.8-management-alpine - container_name: 'rabbitmq' + container_name: rabbitmq ports: - 5672:5672 - 15672:15672 # A stable hostname is important to prevent the volume from continually growing on # every restart. See issue described here: https://stackoverflow.com/questions/63115192/stale-rabbitmq-data-queue-files-eating-up-disk - hostname: 'rabbitmq' + hostname: rabbitmq volumes: - - rabbitmq-data/:/var/lib/rabbitmq/ - - rabbitmq-logs/:/var/log/rabbitmq + - rabbitmq-data:/var/lib/rabbitmq/ + - rabbitmq-logs:/var/log/rabbitmq healthcheck: test: rabbitmq-diagnostics -q ping interval: 30s @@ -34,12 +34,12 @@ services: image: postgres:12.2 restart: always ports: - - '5432:5432' + - 5432:5432 env_file: ./docker.env volumes: - db:/var/lib/postgresql/data healthcheck: - test: [ "CMD-SHELL", "pg_isready -U postgres" ] + test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 5s retries: 5 @@ -48,8 +48,8 @@ services: container_name: nginx restart: unless-stopped ports: - - "80:80" - - "443:443" + - 80:80 + - 443:443 volumes: - ./nginx:/etc/nginx/conf.d - certbot-etc:/etc/letsencrypt diff --git a/docker_setup.sh b/docker_setup.sh index 6ab116f..d6c782a 100755 --- a/docker_setup.sh +++ b/docker_setup.sh @@ -1,20 +1,31 @@ #!/bin/bash -postgresPassword=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 64 | head -n 1) -jwtKey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 256 | head -n 1) -cryptoKey=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1) -publicIpAddress=$(dig +short myip.opendns.com @resolver1.opendns.com) +export LC_CTYPE=C +# :alnum: regex character class includes all Alphanumeric characters +POSTGRESPASSWORD=$(cat /dev/urandom | tr -cd '[[:alnum:]]' | fold -w 64 | head -n 1) +JWTKEY=$(cat /dev/urandom | tr -cd '[[:alnum:]]' | fold -w 256 | head -n 1) +CRYPTOKEY=$(cat /dev/urandom | tr -cd '[[:alnum:]]' | fold -w 32 | head -n 1) -echo "Generating random values for some environment variables..." +# TODO This appears to be unused +# publicIpAddress=$(dig +short myip.opendns.com @resolver1.opendns.com) + +echo "Generating random values for necessary environment variables..." if [ -f ./docker.env ]; then + echo "Backing up current docker.env file" mv docker.env docker.env.$(date +"%Y-%m-%d_%H-%M-%S") fi + cp template.docker.env docker.env -sed -i "s/JWT_KEY=.*/JWT_KEY=$jwtKey/" docker.env -sed -i "s/CRYPTO_KEY=.*/CRYPTO_KEY=$cryptoKey/" docker.env -sed -i "s/POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$postgresPassword/" docker.env -sed -i "s/POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$postgresPassword/" docker.env +# accommodate different behavior by `sed` on MacOS +SPACER="" +if [[ "$OSTYPE" == "darwin"* ]]; then + SPACER="''" +fi + +sed -i $SPACER "s/JWT_KEY=.*$/JWT_KEY=$JWTKEY/" docker.env +sed -i $SPACER "s/CRYPTO_KEY=.*$/CRYPTO_KEY=$CRYPTOKEY/" docker.env +sed -i $SPACER "s/POSTGRES_PASSWORD=.*$/POSTGRES_PASSWORD=$POSTGRESPASSWORD/" docker.env echo "Cool! Now fill in any missing environment variables in docker.env then run docker-compose up to launch Basedash."