docker-compose
Przykład tworzenia wielu kontenerów z dokowaniem z domyślną siecią
Szukaj…
Uwagi
Domyślnie Compose tworzy pojedynczą sieć dla Twojej aplikacji. Każdy kontener dla usługi dołącza do domyślnej sieci i jest dostępny zarówno dla innych kontenerów w tej sieci, jak i dla nich wykrywalny pod nazwą hosta identyczną z nazwą kontenera.
Łącza pozwalają zdefiniować dodatkowe aliasy, poprzez które usługa jest osiągalna z innej usługi. Nie są wymagane do umożliwienia komunikacji między usługami - domyślnie każda usługa może dotrzeć do dowolnej innej usługi o nazwie tej usługi.
Jak stworzyć podstawowe środowisko LAMP z domyślną obsługą sieci
docker-compose.yml
version: '2'
services:
php:
image: phpmyadmin/phpmyadmin
links:
- mysql:db
depends_on:
- mysql
mysql:
image: k0st/alpine-mariadb
volumes:
- ./data/mysql:/var/lib/mysql
environment:
- MYSQL_DATABASE=mydb
- MYSQL_USER=myuser
- MYSQL_PASSWORD=mypass
nginx:
image: nginx:stable-alpine
ports:
- "81:80"
volumes:
- ./nginx/log:/var/log/nginx
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- php
nginx / nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile off;
server {
listen 80;
location / {
proxy_pass http://php;
proxy_set_header Host $host;
proxy_redirect off;
}
}
}
Zauważ, że konfiguracja nginx jest uproszczona, ale powyżej powinna działać do testowania - w zasadzie wszystko, co robi, to proxy aplikacji php. Mapy do portu 81, aby uniknąć konfliktów na hoście - dostosuj w razie potrzeby.
Jeśli chodzi o łączenie, możesz zobaczyć, że jeśli uruchomisz: docker-compose exec mysql ping -c2 nginx
celu pingowania z kontenera mysql do kontenera nginx, odniesiesz sukces, nawet jeśli między tymi kontenerami nie ma określonych łączy . Docker Compose utrzyma te linki w domyślnej sieci.