docker-compose
Docker-komponera multi-container exempel med standardnätverk
Sök…
Anmärkningar
Som standard skapar Compose ett enda nätverk för din app. Varje behållare för en tjänst går med i standardnätverket och kan nås både av andra behållare i det nätverket och kan upptäckas av dem på ett värdnamn som är identiskt med behållarnamnet.
Länkar låter dig definiera extra alias med vilka en tjänst kan nås från en annan tjänst. De krävs inte för att aktivera tjänster att kommunicera - som standard kan alla tjänster nå någon annan tjänst på den tjänstens namn.
Hur man skapar en grundläggande LAMP-miljö med standardnätverk
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;
}
}
}
Observera att nginx-konfigurationen är förenklad men ovan bör fungera för testning - i princip allt det gör är att lägga till php-appen. Kartor till port 81 för att undvika konflikter med värden - justera efter behov.
När det gäller länk kan du se att om du kör: docker-compose exec mysql ping -c2 nginx
till ping från mysql-behållaren till nginx-behållaren, lyckas du även om det inte finns några länkar som anges mellan dessa containrar . Docker Compose kommer att behålla dessa länkar i standardnätverket för dig.