2017-08-08 17 views
1

Mon problème est que j'ai un fichier docker-compose.yml et un fichier haproxy.cfg et je veux docker-composer pour copier le fichier haproxy.cfg dans le conteneur docker. Selon le poste Docker composer copy files je peux utiliser des volumes pour le faire mais dans mon cas, je reçois l'erreur ci-dessous. Quelqu'un peut-il m'aider à atteindre cet objectif?Docker-Compose impossible de copier haproxy.cfg

Voici le code et tout

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" 

Structure des dossiers

enter image description here

Sortie de commande

[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

Vous ne pouvez pas copier un fichier dans un conteneur à l'aide de docker-composer. Cela doit être fait à l'intérieur de la 'Dockerfile' lui-même – Serey

+0

Je n'ai pas le fichier ... Je suis censé utiliser l'image officielle haproxy ... est-il possible que je peux le faire ... – utkarsh31

+0

@Serey J'ai fait avant, voir ma réponse ci-dessous – MatTheWhale

Répondre

3

Essayez ceci:

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

lieu de monter le répertoire entier, cela montera seulement haproxy.cfg. Le ro est une abréviation de lecture seule, et son utilisation garantit que le conteneur ne le modifiera pas après son montage.

+0

Merci beaucoup mat .... qui a fonctionné .. :) – utkarsh31

1

Pour ajouter des fichiers supplémentaires au conteneur, vous devez construire au-dessus de l'image existante de haproxy.

Par exemple, votre Dockerfile devrait ressembler à ceci:

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

Ensuite, vous pouvez mettre à jour votre fichier Compose docker en conséquence.

Si vous prévoyez d'utiliser cela pour le développement local, montez le fichier (s), voir @ réponse

de MatTheWhale Voir plus au official haproxy Docker page

+0

Merci beaucoup pour cela ... mais y a-t-il de toute façon que nous puissions le faire sans utiliser le fichier docker ... supposons que j'ai l'image docker présente et j'ai fait quelques changements dans le 'haproxy.cfg'. Au lieu de mettre à jour une image je ne peux pas copier directement le 'haproxy.cfg' local à l'emplacement dans l'image ... – utkarsh31

+0

Merci serey ... – utkarsh31