首页 > 解决方案 > 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=reloadcommand: -- --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

标签: dockerdocker-composeodoo

解决方案


您正在命令行上使用链接。--link db:db .

但是您的 .yml 中没有定义网络。定义它networks:


推荐阅读