Używam funkcji docker-compose do budowania kompletnego stosu programistycznego.Jak obsługiwać adresy IP podczas łączenia kontenerów dokerów ze sobą za pomocą funkcji dokowania?
Aplikacja wymaga do działania serwera mysql.
serwera MySQL jest zewnętrznym Konfiguracja pojemnika przez Döcker-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
Aplikacja posiada własną Döcker-compose.yml i odwołuje się do kontenera 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?
nie mogę przejść je w docker-compose, ponieważ jest dynamiczny.
wiem, że aplikacja jest świadomy adres IP mysql, jak mam pewne zmienne Zestaw:
application-container$ env|grep ADDR
MYSQL_PORT_3306_TCP_ADDR=172.17.0.241
Jednak to nie jest mój wymagane DB_HOST
.
Czy mogę zmapować zmienną w jakiś sposób na DB_HOST
lub ustawić inaczej?
Dlaczego twój serwer mysql znajduje się w zewnętrznym pliku dokowanego-composer.yml? Czy to naprawdę jest wymagane? Zwykle, jeśli masz aplikacje kontenerowe, które muszą działać razem, musisz skonfigurować tylko jeden plik dokowany-composer.yml. – nessuno
@nessuno Chcę użyć tego kontenera mysql dla wielu projektów. Nie potrzebuję 12 latających serwerów mysql.Co więcej, mapuję dane mysql na mój duży dysk twardy znajdujący się na '/ data/mysql', ponieważ baza danych mysql może stać się całkiem masywna. Jeśli masz wiele instancji mysql zmapowanych do tego samego folderu, może to prowadzić do problemów z systemem plików. – k0pernikus
Możesz umieścić konfigurację kontenera mysql razem ze swoją aplikacją, po prostu musisz tylko uruchomić kompilację dockera z flagą '--no-recreate', jak sądzę. Po tym czasie masz tylko jeden kontener mysql i możesz odwołać się do tego kontenera bezpośrednio w pliku docker-compose.yml, używając jego nazwy. W ten sposób utwórz 'DB_HOST: mysql'. – nessuno