diff options
| author | Markus Witt <feuerrot@feuerrot.org> | 2019-05-03 22:50:59 +0200 | 
|---|---|---|
| committer | Markus Witt <feuerrot@feuerrot.org> | 2019-05-03 22:50:59 +0200 | 
| commit | 2b5780499c3e00e1969c461b864994757a21a8d8 (patch) | |
| tree | 695bfb16ec179debf7aebd74e9f82dd881cba7a1 | |
| parent | 46e85324df762672718c0a6a5ca60fb247e89e5d (diff) | |
use cpanfile to install dependencies, run worker in another docker container
| -rw-r--r-- | .dockerignore | 1 | ||||
| -rw-r--r-- | Dockerfile | 23 | ||||
| -rw-r--r-- | docker-compose.yml | 27 | ||||
| -rwxr-xr-x | docker-run.sh | 50 | 
4 files changed, 58 insertions, 43 deletions
| diff --git a/.dockerignore b/.dockerignore index 939fd11..2a11f34 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,5 @@  Dockerfile  .dockerignore -examples/  .gitignore  README.md  travelynx.conf @@ -2,28 +2,16 @@ FROM debian:stretch-slim  ARG DEBIAN_FRONTEND=noninteractive +COPY cpanfile /app/cpanfile +WORKDIR /app +  RUN apt-get update && apt-get install --no-install-recommends -y \  	cpanminus \  	build-essential \  	libpq-dev \  	git \ -	ssmtp \ -	&& cpanm -in --no-man-pages \ -	Cache::File \ -	Crypt::Eksblowfish \ -	DateTime \ -	DateTime::Format::Strptime \ -	DBI \ -	DBD::Pg \ -	Email::Sender \ -	Geo::Distance \ -	Geo::Distance::XS \ -	Mojolicious \ -	Mojolicious::Plugin::Authentication \ -	Travel::Status::DE::IRIS \ -	UUID::Tiny \ -	JSON \ -	Mojo::Pg \ +	cron \ +	&& cpanm -in --no-man-pages --installdeps . \  	&& rm -rf ~/.cpanm \  	&& apt-get purge -y \  	build-essential \ @@ -31,6 +19,5 @@ RUN apt-get update && apt-get install --no-install-recommends -y \  	&& apt-get autoremove -y  COPY . /app -WORKDIR /app  CMD ["/app/docker-run.sh"] diff --git a/docker-compose.yml b/docker-compose.yml index ac482e0..0b7336d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,6 +4,17 @@ x-common-env: &common-env    TRAVELYNX_DB_NAME: travelynx    TRAVELYNX_DB_USERNAME: travelynx    TRAVELYNX_DB_PASSWORD: travelynx +  TRAVELYNX_SECRET: 12345678 +  TRAVELYNX_MAIL_DISABLE: 1 +  MOJO_MODE: development + +x-common-config: &common-config +  volumes: +    - ./examples/docker/travelynx.conf:/app/travelynx.conf +  build: . +  networks: +    - backend +    services:    database:      image: postgres:11 @@ -14,16 +25,16 @@ services:      volumes:        - ./examples/docker/postgres-init.sh:/docker-entrypoint-initdb.d/init.sh    travelynx: -    build: . +    <<: *common-config      ports:        - "8000:8093" -    networks: -      - backend -    volumes: -      - ./examples/docker/travelynx.conf:/app/travelynx.conf      environment:        <<: *common-env -      TRAVELYNX_MAIL_DISABLE: 1 -      TRAVELYNX_SECRET: 12345678 +  cron: +    <<: *common-config +    environment: +      <<: *common-env +      CRON: 1 +  networks: -  backend: +  backend:
\ No newline at end of file diff --git a/docker-run.sh b/docker-run.sh index 29ffa7b..696aa35 100755 --- a/docker-run.sh +++ b/docker-run.sh @@ -4,6 +4,14 @@ set -eu  WAIT_DB_HOST=${TRAVELYNX_DB_HOST}  WAIT_DB_PORT=5432 +check_config() { +	if [ ! -f travelynx.conf ] +	then +		echo "The configuration file is missing" +		exit 1 +	fi	 +} +  wait_for_db() {  	set +e  	for i in $(seq 1 ${WAIT_DB_TIMEOUT:-5}) @@ -11,30 +19,40 @@ wait_for_db() {  		(echo >/dev/tcp/${WAIT_DB_HOST}/${WAIT_DB_PORT}) &>/dev/null  		if [ $? -eq 0 ]; then  		    break +		else +			echo "Can't reach DB @ ${WAIT_DB_HOST}:${WAIT_DB_PORT}"  		fi  		sleep 1  	done  	set -e  } -if [ ! -f travelynx.conf ] -then -	echo "The configuration file is missing" -	exit 1 -fi +run_app() { +	if [ \ +		"${TRAVELYNX_MAIL_DISABLE:-0}" -eq 0 \ +		-a "${TRAVELYNX_MAIL_HOST:-unset}" != "unset" \ +	] +	then +		export EMAIL_SENDER_TRANSPORT=SMTP +		export EMAIL_SENDER_TRANSPORT_HOST=${TRAVELYNX_MAIL_HOST} +		export EMAIL_SENDER_TRANSPORT_PORT=${TRAVELYNX_MAIL_PORT:-25} +	fi -if [ \ -	"${TRAVELYNX_MAIL_DISABLE:-0}" -eq 0 \ -	-a "${TRAVELYNX_MAIL_HOST:-unset}" != "unset" \ -] -then -	export EMAIL_SENDER_TRANSPORT=SMTP -	export EMAIL_SENDER_TRANSPORT_HOST=${TRAVELYNX_MAIL_HOST} -	export EMAIL_SENDER_TRANSPORT_PORT=${TRAVELYNX_MAIL_PORT:-25} -fi +	perl index.pl database migrate +	exec /usr/local/bin/hypnotoad -f index.pl +} + +run_cron() { +	exec perl index.pl worker +} + +check_config  wait_for_db -perl index.pl database migrate +if [ "${CRON:-0}" -ne "0" ] +then +	run_cron +fi -exec /usr/local/bin/hypnotoad -f index.pl +run_app
\ No newline at end of file | 
