mirror of
https://github.com/derf/travelynx
synced 2024-11-10 06:54:17 +00:00
use cpanfile to install dependencies, run worker in another docker container
This commit is contained in:
parent
46e85324df
commit
2b5780499c
4 changed files with 58 additions and 43 deletions
|
@ -1,6 +1,5 @@
|
|||
Dockerfile
|
||||
.dockerignore
|
||||
examples/
|
||||
.gitignore
|
||||
README.md
|
||||
travelynx.conf
|
||||
|
|
23
Dockerfile
23
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"]
|
||||
|
|
|
@ -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:
|
|
@ -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,18 +19,15 @@ 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" \
|
||||
|
@ -33,8 +38,21 @@ 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
|
||||
}
|
||||
|
||||
run_cron() {
|
||||
exec perl index.pl worker
|
||||
}
|
||||
|
||||
check_config
|
||||
wait_for_db
|
||||
|
||||
if [ "${CRON:-0}" -ne "0" ]
|
||||
then
|
||||
run_cron
|
||||
fi
|
||||
|
||||
run_app
|
Loading…
Reference in a new issue