docker - docker-compose 导致连接已重置(来自 firefox)或来自服务器的空回复(来自 curl)?
问题描述
我正在使用基于 Debian buster (10) 的 MX-Linux。我的码头引擎信息:
❯ docker version
Client: Docker Engine - Community
Version: 20.10.1
API version: 1.41
Go version: go1.13.15
Git commit: 831ebea
Built: Tue Dec 15 04:34:48 2020
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.1
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: f001486
Built: Tue Dec 15 04:32:45 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0
当我试图docker-compose up --build
针对以下 .yml 文件运行时:
version: '2'
services:
db:
image: postgres:13
environment:
- POSTGRES_PASSWORD=odoo
- POSTGRES_USER=odoo
- POSTGRES_DB=postgres
restart: always
volumes:
- ./postgresql:/var/lib/postgresql/data
odoo14:
image: odoo:14
depends_on:
- db
ports:
- "8069:8069"
tty: true
command: -- --dev=reload
volumes:
- ./addons:/mnt/extra-addons
- ./etc:/etc/odoo
restart: always
正如我从日志中看到的那样,它工作正常,但是当我尝试从 firefox 访问服务odoo14时出现错误The connection was reset
并使用 curl 时出现错误Empty reply from server
。
我检查了其他问题,他们建议让服务odoo14绑定到地址 0.0.0.0 而不是 localhost。所以我替换command: -- --dev=reload
为command: -- --http-interface=0.0.0.0
但没有成功。即使文档中提到 0.0.0.0 是默认接口。
我想让你知道我正在使用 dnsmasq 重定向任何东西user.localhost:8069
或重定向a.user.localhost:8069
到本地主机,它工作正常。但我不确定它是否会干扰 docker-compose。
使用 docker 运行图像时,它工作正常。就像使用以下两个命令:
docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13
docker run -p 8069:8069 --name odoo --link db:db -t odoo:14.0
我在浏览器中被正确重定向。那么docker-compose的问题是什么?
更新
docker ps 结果
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a4dd3a0d7af odoo:14 "/entrypoint.sh -- -…" 3 minutes ago Up 5 seconds 8071-8072/tcp, 0.0.0.0:8069->8069/tcp odoo-14-docker-compose_odoo14_1
5f2d64ea3374 postgres:13 "docker-entrypoint.s…" 3 minutes ago Up 7 seconds 5432/tcp odoo-14-docker-compose_db_1
我想这是网络问题,因为netstat -nltp
结果
netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:39075 0.0.0.0:* LISTEN 848/containerd
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 755/systemd-resolve
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 18540/cupsd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 1124/postgres
tcp6 0 0 :::8069 :::* LISTEN 8984/docker-proxy
tcp6 0 0 :::8071 :::* LISTEN 8972/docker-proxy
tcp6 0 0 ::1:631 :::* LISTEN 18540/cupsd
解决方案
您正在命令行上使用链接。--link db:db
.
但是您的 .yml 中没有定义网络。定义它networks:
推荐阅读
- php - 在 IIS 上使用 Windows 身份验证的 PHP opendir() 授权问题
- c# - 将“Interop.zkemkeeper.dll”导入 WCF 服务时出错
- c# - 为“DerivedTableName”多次指定了“newscatid”列
- ruby-on-rails - ActiveRecord 更新错误 - 非法零长度标识符
- java - 如何在 Eclipse RCP 中修复“缺少约束:Import-Package:”和“Require-Bundle”
- flutter - 在 Flutter web 中没有得到任何错误输出
- javascript - 将 json 对象嵌套到具有重复父详细信息的单个 json 对象中以构造 html 表
- vue.js - 为什么我在设置新项目时遇到 vue-cli 错误
- c# - 在 ASP.NET 类图中显示集合关联 - “System.Collections.Generic.List
找不到” - excel - 尽管 DisplayAlerts = False,VBScript 仍要求我覆盖 Excel 文件