#docker #nginx #drupal #ddev
#docker #nginx #drupal #ddev
Вопрос:
Ранее у меня был локальный сайт drupal, работающий в ddev, затем каким-то образом код был удален, а контейнер ddev остался сконфигурированным.
Когда я попытался перестроить свой локальный сайт, я настроил его с local.
поддоменом, установив следующее в .ddev/config.yaml
:
additional_hostnames:
- local.mysitename
Каким-то образом в процессе повторной настройки ddev я получил два контейнера ddev с одинаковым именем и следующую ошибку при попытке запустить контейнер.
Failed to start mysitename: ddev-router failed to become ready: logOutput=2019/03/19 22:29:32 [emerg] 15415#15415: duplicate upstream "local.mysitename.ddev.local-80" in /etc/nginx/conf.d/default.conf:198
nginx: [emerg] duplicate upstream "local.mysitename.ddev.local-80" in /etc/nginx/conf.d/default.conf:198
nginx: configuration file /etc/nginx/nginx.conf test failed, err=container /ddev-router unhealthy: 2019/03/19 22:29:32 [emerg] 15415#15415: duplicate upstream "local.mysitename.ddev.local-80" in /etc/nginx/conf.d/default.conf:198
nginx: [emerg] duplicate upstream "local.mysitename.ddev.local-80" in /etc/nginx/conf.d/default.conf:198
nginx: configuration file /etc/nginx/nginx.conf test failed
Удаление контейнера из ddev и его повторная настройка, похоже, не помогают.
Как я могу удалить оба контейнера из ddev навсегда или как мне, по крайней мере, устранить указанную выше ошибку?
Комментарии:
1. Проблема в вашей конфигурации nginx, имя домена написано дважды, возможно, разные включаемые файлы
Ответ №1:
Не уверен, каково официальное решение, но я «исправил» его с помощью:
- Удалены проблемные контейнеры docker
- Запустил
docker ps -a
, чтобы вывести список всех контейнеров docker - Ran,
docker rm -f ID
гдеID
— идентификаторы названных контейнеров docker:ddev-mysitename-web
ddev-mysitename-dba
ddev-mysitename-db
- Запустил
- Сброс Docker к заводским настройкам по умолчанию
- Повторно запустил установщик ddev (обратите внимание, что я на Windows, кстати)
- Запустите
ddev start
на сайте
Не идеально, но то, что я сделал выше, исправило мою проблему.
Примечание: Это приведет к удалению баз данных ddev для всех ваших локальных сайтов
Комментарии:
1. Хорошая работа! В следующий раз легко ` docker rm -f $ (docker ps -aq)`, предполагая, что нет никаких контейнеров, отличных от ddev, которые вы хотите сохранить. Также помните, что
ddev rm -a
обычно удаляет большинство вещей, которые необходимо удалить.2.
ddev rm
удалось удалить один из моих дублирующихся сайтов, но когда я попытался запустить его на оставшемся сайте, он пожаловался, что не может его найти. Я был в курсеdocker rm -f $(docker ps -aq)
, но это удаляет ВСЕ контейнеры, нет? Мне было неудобно удалять все, если в этом не было необходимости.
Ответ №2:
Удаление контейнера ddev-router с помощью ddev poweroff
, затем перезапуск DDEV для воссоздания контейнера сработал для меня.