diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 00000000..c4c53c80 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +/var diff --git a/Dockerfile b/Dockerfile index 90df7977..756ea930 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ FROM python:3.12-alpine COPY requirements.txt / -COPY . . + RUN set -ex ;\ apk add --no-cache musl-dev mariadb-connector-c-dev gcc ;\ pip3 install -r /requirements.txt ;\ diff --git a/docker-compose.yaml b/docker-compose.yaml index 9c84add8..5f09d867 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,32 +1,36 @@ services: - db: - image: mariadb:11.6 - restart: on-failure - environment: - - MYSQL_RANDOM_ROOT_PASSWORD=1 - - MYSQL_DATABASE=touchh - - MYSQL_USER=touchh - - MYSQL_PASSWORD=${MYSQL_PASSWORD:-touchh} - volumes: - - ./var/mysql:/var/lib/mysql - - bot: - &py_service - build: . - image: touchh-py - restart: on-failure - command: ['python3', 'manage.py', 'run_bot'] - depends_on: ['db'] - stop_signal: SIGINT - volumes: - - ./:/app - - scheduler: - <<: *py_service - command: ['python3', 'manage.py', 'start_scheduler'] - - web: - <<: *py_service - command: ['python3', 'manage.py', 'runserver', '0.0.0.0:8000'] - ports: - - "${DOCKER_HTTP_BIND:-8000}:8000" + db: + image: mariadb:11.6 + restart: on-failure + environment: + - MYSQL_RANDOM_ROOT_PASSWORD=1 + - MYSQL_DATABASE=touchh + - MYSQL_USER=touchh + - MYSQL_PASSWORD=${MYSQL_PASSWORD:-touchh} + healthcheck: + test: mariadb -utouchh -p${MYSQL_PASSWORD:-touchh} -e 'SELECT 1;' touchh + interval: 1s + timeout: 10s + retries: 10 + volumes: + - ./var/mysql:/var/lib/mysql + bot: + &py_service + build: . + image: touchh-py + restart: on-failure + command: ['python3', 'manage.py', 'run_bot'] + depends_on: + db: + condition: service_healthy + stop_signal: SIGINT + volumes: + - .:/app + scheduler: + <<: *py_service + command: ['python3', 'manage.py', 'start_scheduler'] + web: + <<: *py_service + command: ['python3', 'manage.py', 'runserver', '0.0.0.0:8000'] + ports: + - "${DOCKER_HTTP_BIND:-8000}:8000"