Ich habe einen (globalen) Container Mariadb und ein PHP-FPM-Container in einem Docker-Compose.yml laufen. Sie sind verknüpft, aber die IP und der Port des DB-Containers befinden sich nicht in den Umgebungsvariablen von php-fpm.Docker Container Link nicht in env oder/etc/hosts
begann ich den MariaDB Container wie folgt aus:
$ docker run --name db -e MYSQL_ROOT_PASSWORD=.... -dP mariadb
sieht mein Docker-compose.yml wie folgt aus:
version: "2"
services:
nginx:
build:
context: .
dockerfile: docker/nginx/Dockerfile
ports:
- 80
links:
- fpm
volumes_from:
- app
fpm:
build:
context: .
dockerfile: docker/fpm/Dockerfile
external_links:
- db
volumes_from:
- app
app:
build:
context: .
dockerfile: docker/app/Dockerfile
volumes:
# - /app
- .:/app:ro
Mein fpm Dockerfile:
FROM php:fpm
RUN docker-php-ext-install pdo pdo_mysql
Umgebungsvariablen in phpinfo()
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME db14e2928ed6
PHP_INI_DIR /usr/local/etc/php
PHP_EXTRA_CONFIGURE_ARGS --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data
GPG_KEYS 1A4E8B7277C42E53DBA9C7B9BCAA30EA9C0D5763
PHP_VERSION 7.0.5
PHP_FILENAME php-7.0.5.tar.xz
PHP_SHA256 c41f1a03c24119c0dd9b741cdb67880486e64349fc33527767f6dc28d3803abb
HOME /var/www
USER www-data
Edit:
Ich habe versucht, zu einem ubuntu Container verknüpfen sicher php-fpm nicht vermasseln zu machen. Es funktioniert wie ein temporärer Container, aber wie ich es als external_link in einem docker-compose.yaml schreibe, verschwindet es auch von env und/etc/hosts.
version: "2"
services:
test:
image: ubuntu
external_links:
- db
Die Referenz lautet "Hinweis: Wenn Sie das Dateiformat der Version 2 verwenden, müssen die extern erstellten Container mit mindestens einem der gleichen Netzwerke wie der Dienst verbunden sein, der mit ihnen verknüpft ist." –
Version 2 Compose-Dateien verwenden benutzerdefiniertes Netzwerk, das '/ etc/hosts' nicht mehr verwendet. Es gibt einen eingebetteten DNS-Server, der die Namensauflösung behandelt. – dnephin
Wie kann ich mit dem eingebetteten DNS-Server auf db zugreifen? Ich kann 'db' nicht auflösen (' $ netcat db 3306' 'nc: getaddrinfo: Name oder Dienst nicht bekannt') – schokocappucino