diff options
| author | Markus Witt <feuerrot@feuerrot.org> | 2019-04-21 23:13:03 +0200 | 
|---|---|---|
| committer | Markus Witt <feuerrot@feuerrot.org> | 2019-05-03 22:36:12 +0200 | 
| commit | 46e85324df762672718c0a6a5ca60fb247e89e5d (patch) | |
| tree | 5c462e5b16ffc3ff9f8e2d52da6263a62351afcb | |
| parent | 7df47bdc4e7d7a5f9a14a95069da454f6b890e77 (diff) | |
docker: add docker-compose configuration
🔥docker🔥compose🔥
| -rw-r--r-- | docker-compose.yml | 29 | ||||
| -rwxr-xr-x | docker-run.sh | 20 | ||||
| -rw-r--r-- | examples/docker/postgres-init.sh | 8 | ||||
| -rw-r--r-- | examples/docker/travelynx.conf | 26 | 
4 files changed, 82 insertions, 1 deletions
| diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..ac482e0 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +version: "3.6" +x-common-env: &common-env +  TRAVELYNX_DB_HOST: database +  TRAVELYNX_DB_NAME: travelynx +  TRAVELYNX_DB_USERNAME: travelynx +  TRAVELYNX_DB_PASSWORD: travelynx +services: +  database: +    image: postgres:11 +    networks: +      - backend +    environment:  +      <<: *common-env +    volumes: +      - ./examples/docker/postgres-init.sh:/docker-entrypoint-initdb.d/init.sh +  travelynx: +    build: . +    ports: +      - "8000:8093" +    networks: +      - backend +    volumes: +      - ./examples/docker/travelynx.conf:/app/travelynx.conf +    environment: +      <<: *common-env +      TRAVELYNX_MAIL_DISABLE: 1 +      TRAVELYNX_SECRET: 12345678 +networks: +  backend: diff --git a/docker-run.sh b/docker-run.sh index f147b77..29ffa7b 100755 --- a/docker-run.sh +++ b/docker-run.sh @@ -1,6 +1,22 @@ -#!/bin/sh +#!/bin/bash  set -eu +WAIT_DB_HOST=${TRAVELYNX_DB_HOST} +WAIT_DB_PORT=5432 + +wait_for_db() { +	set +e +	for i in $(seq 1 ${WAIT_DB_TIMEOUT:-5}) +	do +		(echo >/dev/tcp/${WAIT_DB_HOST}/${WAIT_DB_PORT}) &>/dev/null +		if [ $? -eq 0 ]; then +		    break +		fi +		sleep 1 +	done +	set -e +} +  if [ ! -f travelynx.conf ]  then  	echo "The configuration file is missing" @@ -17,6 +33,8 @@ then  	export EMAIL_SENDER_TRANSPORT_PORT=${TRAVELYNX_MAIL_PORT:-25}  fi +wait_for_db +  perl index.pl database migrate  exec /usr/local/bin/hypnotoad -f index.pl diff --git a/examples/docker/postgres-init.sh b/examples/docker/postgres-init.sh new file mode 100644 index 0000000..a8c59d1 --- /dev/null +++ b/examples/docker/postgres-init.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -e + +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL +    CREATE USER ${TRAVELYNX_DB_USERNAME} PASSWORD '${TRAVELYNX_DB_PASSWORD}'; +    CREATE DATABASE ${TRAVELYNX_DB_NAME}; +    GRANT ALL PRIVILEGES ON DATABASE ${TRAVELYNX_DB_NAME} TO ${TRAVELYNX_DB_USERNAME}; +EOSQL
\ No newline at end of file diff --git a/examples/docker/travelynx.conf b/examples/docker/travelynx.conf new file mode 100644 index 0000000..8f3f56f --- /dev/null +++ b/examples/docker/travelynx.conf @@ -0,0 +1,26 @@ +{ +	cache => { +		schedule => $ENV{TRAVELYNX_IRIS_CACHE} // '/var/cache/travelynx/iris', +		realtime => $ENV{TRAVELYNX_IRISRT_CACHE} // '/var/cache/travelynx/iris-rt', +	}, +	db => { +		host => $ENV{TRAVELYNX_DB_HOST} // 'die("Please set TRAVELYNX_DB_HOST")', +		database => $ENV{TRAVELYNX_DB_NAME} // 'travelynx', +		user => $ENV{TRAVELYNX_DB_USERNAME} // 'travelynx', +		password => $ENV{TRAVELYNX_DB_PASSWORD} // die("Please set TRAVELYNX_DB_PASSWORD"), +	}, +	hypnotoad => { +		accepts  => $ENV{TRAVELYNX_HYPNOTOAD_ACCEPTS} // 100, +		clients  => $ENV{TRAVELYNX_HYPNOTOAD_CLIENTS} // 10, +		listen   => [ $ENV{TRALELYNX_HYPNOTOAD_LISTEN} // 'http://*:8093' ], +		pid_file => '/tmp/travelynx.pid', +		workers  => $ENV{TRAVELYNX_HYPNOTOAD_WORKERS} // 2, +		spare    => $ENV{TRAVELYNX_HYPNOTOAD_SPARE} // 2, +	}, +	mail => { +		disabled => $ENV{TRAVELYNX_MAIL_DISABLE} // 0, +	}, +	secrets => [ +		$ENV{TRAVELYNX_SECRET} // die("Please set TRAVELYNX_SECRET"), +	], +}; | 
