From acf0fafb00740ba2a2052bc35cb7a1b927287a50 Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Wed, 29 Mar 2023 12:34:41 +0200 Subject: [PATCH] docker: make development database local folder and add wait for mysql logic --- .dockerignore | 3 +++ .gitignore | 3 +++ docker/development/docker-compose.yaml | 6 +++--- docker/development/entrypoint-master.sh | 26 ++++++++++++++++++++++++- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/.dockerignore b/.dockerignore index 1fcc753..2dd70d9 100644 --- a/.dockerignore +++ b/.dockerignore @@ -113,3 +113,6 @@ config # celerybeat schedule database jdav_web/celerybeat-schedule.db + +# docker development database folder +docker/development/db diff --git a/.gitignore b/.gitignore index e4b0df2..49b2909 100644 --- a/.gitignore +++ b/.gitignore @@ -114,3 +114,6 @@ jdav_web/celerybeat-schedule.db # docker environment variables docker.env + +# docker development database folder +docker/development/db diff --git a/docker/development/docker-compose.yaml b/docker/development/docker-compose.yaml index e1520a1..f34939a 100644 --- a/docker/development/docker-compose.yaml +++ b/docker/development/docker-compose.yaml @@ -17,8 +17,8 @@ services: master: <<: *kompass entrypoint: /app/docker/development/entrypoint-master.sh - stdin_open: true # docker run -i - tty: true # docker run -t + stdin_open: true + tty: true volumes: - ./../../jdav_web:/app/jdav_web ports: @@ -36,5 +36,5 @@ services: restart: always image: mariadb volumes: - - /tmp/db:/var/lib/mysql + - ./db:/var/lib/mysql env_file: docker.env diff --git a/docker/development/entrypoint-master.sh b/docker/development/entrypoint-master.sh index 5d431ff..bf24fa5 100755 --- a/docker/development/entrypoint-master.sh +++ b/docker/development/entrypoint-master.sh @@ -2,7 +2,31 @@ set -o errexit -sleep 5 +mysql_ready() { +cd /app/jdav_web +python << END +import sys + +from django.db import connections +from django.db.utils import OperationalError + +db_conn = connections['default'] + +try: + c = db_conn.cursor() +except OperationalError: + sys.exit(-1) +else: + sys.exit(0) + +END +} + +until mysql_ready; do + >&2 echo 'Waiting for MySQL to become available...' + sleep 1 +done +>&2 echo 'MySQL is available' cd /app