Docker-Compose无法复制haproxy.cfg

utk*_*h31 3 haproxy docker docker-compose docker-volume docker-copy

我的问题是我有一个docker-compose.yml文件和一个haproxy.cfg文件,我想让docker-compose将haproxy.cfg文件复制到docker容器中。根据Docker composer发布后的复制文件,我可以使用卷来执行此操作,但就我而言,出现以下错误。谁能帮助我实现这一目标。

以下是代码和所有内容

docker-compose.yml

version: "3.3"
services:
 ###After all services are up, we are initializing the gateway
 gateway:
  container_name: gateway-haproxy
  image: haproxy
  volumes:
    - .:/usr/local/etc/haproxy
  ports:
   - 80:80
  network_mode: "host"
Run Code Online (Sandbox Code Playgroud)

资料夹结构

在此处输入图片说明

命令输出

root@ubuntu:/home/karunesh/Desktop/Stuff/SelfStudy/DevOps/docker# docker-compose up
Creating gateway-haproxy ... 
Creating gateway-haproxy ... done
Attaching to gateway-haproxy
gateway-haproxy | <7>haproxy-systemd-wrapper: executing /usr/local/sbin/haproxy -p /run/haproxy.pid -f /usr/local/etc/haproxy/haproxy.cfg -Ds 
gateway-haproxy | [ALERT] 219/163305 (6) : [/usr/local/sbin/haproxy.main()] No enabled listener found (check for 'bind' directives) ! Exiting.
gateway-haproxy | <5>haproxy-systemd-wrapper: exit, haproxy RC=1
gateway-haproxy exited with code 1
Run Code Online (Sandbox Code Playgroud)

Ser*_*rey 5

为了向容器添加其他文件,您必须在haproxy的现有映像之上构建

例如,您的 Dockerfile 应如下所示:

FROM haproxy:latest
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg
Run Code Online (Sandbox Code Playgroud)

然后你可以相应地更新你的 docker compose 文件。

如果您打算将其用于本地开发,只需挂载文件,请参阅@MatTheWhale 的回答

官方 haproxy Docker 页面上查看更多信息

  • 非常感谢这个...但是无论如何我们可以在不使用 docker 文件的情况下做到这一点...让我们假设我有 docker 镜像并且我已经在 `haproxy.cfg` 中做了一些更改。我可以不直接将本地`haproxy.cfg` 复制到图像中的位置,而不是更新图像... (3认同)

Mat*_*ale 5

尝试这个:

volumes:
  - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
Run Code Online (Sandbox Code Playgroud)

除了挂载整个目录,它只会挂载haproxy.cfg。该ro是只读的缩写,它的使用保证了它被安装后,容器将不能修改它。