swarm instalar hub compose docker ip docker-compose

instalar - install docker



¿Cómo manejar las direcciones IP al vincular contenedores docker entre sí usando docker-compose? (1)

Estoy usando docker-componte para construir una pila de desarrollo completa.

La aplicación necesita un servidor mysql para funcionar.

El servidor mysql es una configuración de contenedor externo por docker-compose:

mysql: image: mysql:5.6 volumes: - /data/mysql:/var/lib/mysql - ./docker/mysql.d:/etc/mysql/conf.d ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: password

La aplicación tiene su propio docker-compose.yml y hace referencia al contenedor mysql:

my-application: build: . # the Dockerfile resides in the current folder ports: - "9180:80" - "9543:443" external_links: - mysql_mysql_1:mysql environment: DOCKER_ENVIRONMENT: dev DB_NAME: local_db DB_PASS: password DB_USER: root DB_HOST: # how to set the mysql''s IP address?

No puedo pasarlos en el docker-componer, ya que es dinámico.

Sé que la aplicación conoce la dirección IP de mysql, ya que tengo ciertas variables establecidas:

application-container$ env|grep ADDR MYSQL_PORT_3306_TCP_ADDR=172.17.0.241

Sin embargo, este no es mi DB_HOST requerido.

¿Puedo asignar la variable de alguna manera a DB_HOST o configurarla de manera diferente?


No es necesario configurar la IP, pero puede hacer referencia al nombre de host virtual del contenedor, y este es el mismo valor que el nombre de su contenedor vinculado.

Esto significa que puede establecer el DB_HOST desde el docker-compose.yml , ya sea con links (recomendado) o external_links :

your_application: build: . ports: - "9180:80" - "9543:443" external_links: - mysql_mysql_1:docker-mysql environment: DB_HOST: docker-mysql

Como cuando te conectas a tu contenedor acoplable, puedes conectarte a tu contenedor mysql:

application-container $ mysql -h docker-mysql -uroot -ppassword -p 3360

Funciona igual cuando vincula contenedores del mismo docker-composer.yml también.

Esto también está documented :

Enlace a contenedores en otro servicio. Especifique el nombre del servicio y el alias del enlace (SERVICE: ALIAS), o solo el nombre del servicio (que también se usará para el alias).

links: - db - db:database - redis

Se creará una entrada con el nombre del alias en / etc / hosts dentro de contenedores para este servicio, por ejemplo:

172.17.2.186 db 172.17.2.186 database 172.17.2.187 redis

También se crearán variables de entorno ; consulte la referencia de la variable de entorno para más detalles.