Почему команда выполняется эффективно через директиву EXEC на работающем контейнере, а не через docker-compose? - PullRequest
0 голосов
/ 06 мая 2019

Я докеризирую стек lemp со следующей конфигурацией docker-compose:

mariadb:
 container_name: lemp-mariadb
 image: mariadb
 #user: $UID
 environment:
  - MYSQL_ROOT_PASSWORD=root.maria
  - MYSQL_DATABASE=wordpress
  - MYSQL_USER=wordpress
  - MYSQL_PASSWORD=wordpress
 volumes:
  - ./db:/var/lib/mysql
phpfpm:
 container_name: lemp-fpm
 image: php:7-fpm
 volumes:
  - ./code:/code
 links:
  - mariadb
 command: docker-php-ext-install mysqli
nginx:
 container_name: lemp-nginx
 image: nginx:latest
 ports:
  - "8080:80"
 volumes:
  - ./code:/code
  - ./site.conf:/etc/nginx/conf.d/default.conf
 links:
  - phpfpm
 command: nginx -g 'daemon off;'

Проблема связана со строкой в ​​конфигурации:

command: docker-php-ext-install mysqli

Если я прокомментирую эту строку во время docker-составьте подпрограмму, она работает нормально, оставляя работающими 3 машины. Все, что мне нужно сделать, это запустить эту команду на машине lemp-fpm через docker exec следующим образом:

docker exec lemp_phpfpm_1 docker-php-ext-install mysqli

, которая не выдает ошибку, и я могуподключиться к базе данных с расширением mysqli.Экземпляр lemp-fpm завершается с кодом ошибки 0, когда та же команда выполняется через docker-compose.Вопрос почему?и что за обходной путь? enter image description here

1 Ответ

0 голосов
/ 06 мая 2019

Контейнеры Docker предназначены для выхода после выполнения указанной «команды». Если вы хотите, чтобы контейнер оставался рядом после выполнения команды, добавьте еще одну команду, например, команду tail, которая остается открытой.

Другая ваша альтернатива - запустить ваш «docker-php-ext-install mysqli» во время сборки образа Docker и создать свой собственный образ контейнера. Затем запустите контейнер только с "tail -f / dev / null" в качестве строки "command".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...