我目前正在尝试如何配置docker-compose.yml
以允许Web服务器(django)与主机上运行的PostgreSQL数据库通信。 >
该应用程序可以在容器外部完美运行。
现在我想创建一个容器,以提供更好的管理和部署功能。
我已经尝试过了,
docker-compose.yml :
version: '3'
services:
web:
image: myimage
volumes:
- .:/appdir
environment:
- DB_NAME=test
- DB_USER=test
- DB_PASSWORD=test
- DB_HOST=localhost
command: python manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
networks:
- mynet
networks:
mynet:
Dockerfile :
FROM python:3
ENV PYTHONUNBUFFERED=1 \
DJANGO_SETTINGS_MODULE=app.settings \
DEBUG=True \
SECRET_KEY=akey
WORKDIR /appdir
COPY . /appdir
EXPOSE 8000
RUN pip install -r requirements.txt
但是当我这样做时,出现以下错误:
web_1 | django.db.utils.OperationalError: could not connect to server: Connection refused
web_1 | Is the server running on host "localhost" (127.0.0.1) and accepting
web_1 | TCP/IP connections on port 5432?
谢谢
答案 0 :(得分:0)
localhost
是相对的-在docker容器内部-localhost(aka 127.0.0.1)是指容器本身。如果要连接到主机,请给容器您的主机真实IP作为DB_HOST
。
有很多找到主机IP的方法,例如:
在您的终端hostname -I | awk '{print $1}'