Я заметил закономерность, которую легко воспроизвести, но я не могу ответить, почему в течение моей жизни это происходит. По какой-то причине, если я использую команду docker-compose kill
(чтобы убить все контейнеры), а затем снова запустите его с docker-compose -d
мой веб-контейнер застрял в бесконечном цикле перезапуска. Я искал ответы на все вопросы в интернете и ничего не смог найти.
Выглядит примерно так, как показано ниже, где показаны шаги, чтобы увидеть, что происходит.
Пожалуйста, обратитесь к этому посту, который я сделал (Docker-Compose не будет увеличивать объем моего файла php.ini) для моей полной настройки докера, которая используется здесь точно таким же образом, но я приложу свой файл docker-compose здесь для быстрого ознакомления.
докер-compose.yml
version: '2'
services:
dblive:
image: mysql:5.5.52
volumes:
- ./db_data_live:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: ****
MYSQL_DATABASE: ****
MYSQL_USER: ****
MYSQL_PASSWORD: ****
dbdev:
image: mysql:5.5.52
volumes:
- ./db_data_dev:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD:****
MYSQL_DATABASE: ****
MYSQL_USER: ****
MYSQL_PASSWORD: ****
phpmyadmin:
depends_on:
- dblive
- dbdev
image: phpmyadmin/phpmyadmin
environment:
PMA_ARBITRARY : 1
restart: always
ports:
- "8081:80"
web:
build: ./
depends_on:
- dblive
- dbdev
volumes:
- ./web:/var/www
- ./config/custom.php.ini:/etc/php5/apache2/conf.d/custom.php.ini
- ./logs/apache_error.log:/var/log/apache2/error.log
- ./logs/apache_access.log:/var/log/apache2/access.log
- ./config/apache_default.conf:/etc/apache2/sites-enabled/000-default.conf
restart: always
ports:
- "80:80"- "443:443"
Действия по воспроизведению
docker-compose up -d
снова запустить контейнеры и следите за докером ps каждые 5 секунд, чтобы заметить последовательный перезапуск веб-контейнера. Не стесняйтесь убивать и перезапускать много раз, и перезапуск будет продолжаться.#-
./config/custom.php.ini:/etc/php5/apache2/conf.d/custom.php.ini
Мой вопрос: почему небольшое изменение файла docker-compose.yml и его запуск приводят к тому, что он теперь работает? Если я убью контейнер по какой-либо причине после этого и попытаюсь запустить снова без внесения изменений в docker-compose.yml файл затем цикл перезапуска происходит в веб-контейнере. Почему он это делает?
Ниже приведено изображение, показывающее, как оно работает после предыдущего перезапуска с первого прикрепленного изображения. На изображении, пожалуйста, игнорируйте и извините ERROR: yaml.scanner.ScannerError:
Я забыл, что у меня есть пароли к MySQL от XX, поэтому убедитесь, что вы просто добавили что-то туда, чтобы сделать это счастливым. Содержание после ошибки показывает, что она снова начинает работать снова.
Ответ не использовать run docker-compose kill, а использовать докер-сочинять вместо этого, потому что docker-compose kill только убивает контейнеры, но не очищает кеш, который делает docker-compose для вас.
Других решений пока нет …