2017-08-08 115 views
1

我的问题是我有一个docker-compose.yml文件和一个haproxy.cfg文件,我想docker-compose将haproxy.cfg文件复制到docker容器中。根据帖子Docker composer copy files我可以使用卷来做到这一点,但在我的情况下,我得到了以下错误。任何人都可以帮助我实现这一点。Docker-Compose不能复制haproxy.cfg

下面是代码,一切

泊坞窗,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" 

文件夹结构

enter image description here

命令输出

[email protected]:/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 
+0

你不能用docker-compose将一个文件复制到一个容器中。这必须在'Dockerfile'本身完成 – Serey

+0

我没有文件...我应该使用官方haproxy图像...有什么办法可以做到这一点... – utkarsh31

+0

@Serey我已经完成它之前,看到我的答案 – MatTheWhale

回答

3

试试这个:

volumes: 
    - ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro 

相反挂载整个目录,这只会挂载haproxy.cfgro是只读的缩写,其用法保证容器在挂载后不会对其进行修改。

+0

感谢很多垫....工作.. :) – utkarsh31

1

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

例如,您Dockerfile应该是这样的:

FROM haproxy:latest 
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg 

然后你就可以相应地更新您的码头工人撰写的文件。

如果你打算使用这个地方发展,只是安装文件(S),见@ MatTheWhale的答案

多见于official haproxy Docker page

+0

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

+0

谢谢serey ... – utkarsh31