summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.dockerignore1
-rw-r--r--Dockerfile23
-rw-r--r--docker-compose.yml27
-rwxr-xr-xdocker-run.sh50
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
diff --git a/Dockerfile b/Dockerfile
index b7067b9..289660a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -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