我目前正在试图弄清楚如何配置我的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?
谢谢
localhost
是相对的 - 在docker容器内 - localhost(aka 127.0.0.1)引用容器本身。如果你想连接到你的主机 - 给容器你的主机真正的ip作为DB_HOST
。
有很多方法可以找到你的主机ip,例如:在你的终端hostname -I | awk '{print $1}'
中运行