我正在使用Docker设置一个应用程序,其中包括Django和Postgres。我无法从应用程序连接到Postgres。当我运行以下任一命令时:
docker-compose run web python manage.py runserver
docker-compose run web python manage.py migrate
我会收到以下错误提示:
django.db.utils.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
这是我的Dockerfile:
FROM python:2.7
ADD requirements.txt /app/requirements.txt
WORKDIR /app/
RUN pip install -r requirements.txt
我的 docker-compose.yml 文件:version: '2'
services:
db:
image: postgres:9.4
hostname: db
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres
ports:
- "5432:5432"
web:
build:
context: .
dockerfile: Dockerfile
hostname: web
volumes:
- .:/app
ports:
- "8000:8000"
links:
- db
depends_on:
- db
command:
python manage.py runserver 0.0.0.0:8000
以及Django中的数据库设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
docker ps -a
显示:
e9df7e1644ce web "python manage.py ..." About a minute ago Up About a minute 0.0.0.0:8000->8000/tcp web_1
60801d3256e4 postgres:9.4 "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp db_1
Django版本为v1.10.5
Mac版Docker为v1.13.1
docker-compose版本为v1.11.1
以下是日志链接:
depends_on: - db
会防止 web 容器在 db 容器之前启动,不是吗? - Steven Mercatantedocker-compose build
和docker-compose up
后,我开始收到web
的日志。 - Steven Mercatante