docker에서 서로 다른 컨테이너간 Link는 참 좋은 기능이다.
WordPress 를 가정하면,
docker run –link mysql […]
이런식으로 설정이 가능하고 그럴경우 공식 wordpress는 진짜 DB 세팅 따위 안해도 되는 장점이 있다
그러나 –link는 앞으로 안쓰인다는 (https://docs.docker.com/network/links/) 것이 정설.
공통의 bridged network를 사용하는 것을 추천한다.
docker network create [브리지이름]
으로 네트워크를 설정하고.
새로 만드는 컨테이너는
docker run --network=[브리지이름]
으로 서로 연결해준다.
이미 운영중인 컨테이너는
docker network connect [브리지이름] [컨테이너이름]
으로 연결해줄수 있다.
이렇게 될 경우 컨테이너이름을 host이름으로 서로 연결할수 있다.
간단한 예시
docker network create dbms
docker run --name=mariadb --restart=always -d --network=dbms -v /srv/mariadb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=비밀번호 mariadb
docker run --name wordpress --restart=always -d -p 8088:80 --network=dbms wordpress
docker run --name myadmin -d -e PMA_ARBITRARY=1 --restart=always --network=dbms -p 8081:80 phpmyadmin/phpmyadmin
이렇게 하고, wordpress 설정시 mysql 서버를 mariadb 로 정해주면된다. 물론 phpmyadmin 은 localhost 접속이 아니고 접속시 DB를 mariadb로 정해줘야 하고.
docker-compose (v2 기준) 으로는 더욱 간단하다.
Service 에 external을 설정하고, Network를 넣는다. 예시
version: '2'
services:
app:
image: nextcloud
ports:
- 8080:80
networks:
- dbms
external_links:
- mariadb:mariadb
volumes:
- /srv/nextcloud/config:/var/www/html/config
- /media/data/nextcloud:/var/www/html/data
restart: always
networks:
dbms:
external: true