我将django应用程序停靠,它需要连接到HOST PostgresDB数据库。为此我在docker-compose中做了:
version: '2'
services:
web:
build:
context: .
dockerfile: DockerfileWeb
command: gunicorn --timeout=300 --graceful-timeout=30 -w 2 --threads 2 -b 0.0.0.0:8000 cobros.wsgi
volumes:
- .:/code
- /tmp:/tmp
network_mode: "host"
ports:
- "8000:8000"
restart: always
environment:
- DATABASE_URL=postgres://postgres@127.0.0.1/postgres
- PRODUCTION="true"
这项工作很好,除非我尝试在docker中运行命令,例如:
docker-compose run web python manage.py periodico
现在我收到了这个错误:
[192.168.1.70] out:错误:无法为服务网站创建容器: b"冲突选项:主机类型网络无法与链接一起使用。 这将导致未定义的行为"
答案 0 :(得分:2)
这是因为docker-compose run
运行另一个容器,一个新容器,它试图连接到与docker-compose up
容器相同的网络,以便它们可以一起工作。
由于发布规则,这不会与host
网络一起使用。
相反,您可以使用docker-compose exec web python manage.py periodico
答案 1 :(得分:0)
我知道这个问题的答案迟到了,但是 docker 仍然有同样的问题。对我来说,@RawKode 的问题是未定义的变量,例如 DATABASE_URL。你可以用
解决它docker run -it --rm --net=host <image_name> <command>
添加 -e / --env-file
和变量名称。
该命令较长,但其工作方式与 docker-compose run 完全相同。