Docker + PostgreSQL: Name or service not known
Только начинаю работу с Docker и при использовании docker-compose up в контейнере PostgreSQL возникает следующая ошибка:
INFO | __main__:before_log:21 - Retrying __main__.wait_postgres in 2.0 seconds as it raised [Errno -2] Name or service not known
После нескольких неудачных попыток весь контейнер bot перезагружается, и всё по новой... В чём проблема?
Dockerfile:
FROM python:3.9 as production
LABEL maintainer="Alex Root Junior <[email protected]>" \
description="Telegram Bot"
ENV PYTHONPATH "${PYTHONPATH}:/app"
ENV PATH "/app/scripts:${PATH}"
EXPOSE 80
WORKDIR /app
COPY Pipfile* /app/
RUN pip install pipenv && \
pipenv install --system --deploy
ADD . /app/
RUN chmod +x scripts/* && \
pybabel compile -d locales -D bot
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["run-webhook"]
docker-compose.yml
version: '3.7'
services:
bot:
container_name: bot
build:
context: .
env_file:
- .env
restart: on-failure
stop_signal: SIGINT
depends_on:
redis:
condition: service_started
postgres:
condition: service_healthy
api:
condition: service_started
nginx:
condition: service_started
redis:
env_file:
- .env
container_name: bot-redis
image: redis:5-alpine
restart: on-failure
volumes:
- redis-data:/data
postgres:
env_file:
- .env
container_name: bot-postgres
image: postgres:latest
volumes:
- postgres-data:/var/lib/postgresql/data/
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U postgres" ]
interval: 5s
timeout: 5s
retries: 5
ports:
- 5432:5432
api:
env_file:
- .env
image: aiogram/telegram-bot-api:latest
container_name: bot-api
restart: always
volumes:
- telegram-bot-api-data:/var/lib/telegram-bot-api
nginx:
container_name: bot-nginx
image: nginx:1.19-alpine
restart: always
depends_on:
- api
volumes:
- telegram-bot-api-data:/var/lib/telegram-bot-api
- ./docker/nginx:/etc/nginx/conf.d/
ports:
- 8084:8084
volumes:
redis-data:
postgres-data:
telegram-bot-api-data:
.env
COMPOSE_PROJECT_NAME=aiogram_bot
COMPOSE_FILE=docker-compose.yml
TELEGRAM_TOKEN=token
BOT_PUBLIC_PORT=8084
DOMAIN=localhost
WEBHOOK_BASE_PATH=/webhook
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_DB_FSM=0
REDIS_DB_JOBSTORE=1
POSTGRES_HOST=postgres
POSTGRES_PORT=5423
POSTGRES_PASSWORD=postgres
POSTGRES_USER=postgres
POSTGRES_DB=postgres
TELEGRAM_API_ID=id
TELEGRAM_API_HASH=hash
TELEGRAM_STAT=1
TELEGRAM_LOCAL=1
Спасибо заранее.