我有这个docker-compose.yml文件:
inbound data
从Postgres收到错误消息:
version: '3.7'
services:
users:
build:
context: ./services/users
dockerfile: Dockerfile-prod
expose:
- 5000
environment:
- FLASK_ENV=production
- APP_SETTINGS=project.config.ProductionConfig
- DATABASE_URL=postgres://postgres:postgres@users-db:5432/users_prod
- DATABASE_URL_DEPTS=postgres://postgres:postgres@users-db:5432/depts_prod
- DATABASE_TEST_URL=postgres://postgres:postgres@users-db:5432/users_test
- DATABASE_TEST_URL_DEPTS=postgres://postgres:postgres@users-db:5432/depts_test
depends_on:
- users-db
users-db:
build:
context: ./services/users/project/db
dockerfile: Dockerfile
expose:
- 5432
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
nginx:
build:
context: ./services/nginx
dockerfile: Dockerfile-prod
restart: always
ports:
- 80:80
depends_on:
- users
端口5432被定义为公开的,为什么它不接受连接?在开发过程中,我在Postgres上使用“ 5436:5432”,在Flask应用程序上使用“ 5000:5001”,效果很好。
Flask应用程序的Dockerfile:
(psycopg2.OperationalError) could not connect to server: Connection refused
Is the server running on host "users-db" (172.19.0.2) and accepting
TCP/IP connections on port 5432?
Postgres的Dockerfile:
FROM python:3.6.9-slim
RUN apt-get update && \
apt-get install -y netcat && \
apt-get clean
RUN mkdir /usr/src/app
WORKDIR /usr/src/app
COPY ./requirements.txt /usr/src/app/requirements.txt
RUN pip install -r requirements.txt
COPY ./entrypoint.sh /usr/src/app/entrypoint.sh
RUN chmod +x /usr/src/app/entrypoint.sh
COPY . /usr/src/app
CMD ["/usr/src/app/entrypoint-prod.sh"]
入口点:
FROM postgres:11.2-alpine
ADD users/create.sql /docker-entrypoint-initdb.d