Я уже более недели пытаюсь запустить образ Docker Discourse в ECS (сервис контейнеров AWS), поэтому решил обратиться сюда за советом. На моем автономном сервере EC2 Discourse работает без проблем. Для этого я создал отдельный экземпляр PostgreSQL RDS и кластер ElastiCache для Redis.
Для развертывания в ECS я загрузил созданный образ в реестр ECR. Затем я создал задачу, которая извлекает этот образ. Ожидаемый результат — запуск контейнера Discourse (он работает на моем автономном сервере EC2, где я также остановил запущенный контейнер). Однако я получаю только ошибки с кодом выхода 1.
Я также заметил, что команда ./launcher start app выводит много “-e”, которые уже указаны в app.yml. Существуют ли какие-либо дополнительные команды “run”, которые необходимо выполнить в ECS?
Сначала: это неподдерживаемая установка. В большинстве случаев, если вы не используете стандартную установку Docker, вы остаетесь один на один с проблемой.
Но тем не менее, вот что, по моему мнению, вам нужно знать:
Вам нужно передать все эти переменные окружения (ENV) в ваши контейнеры ECS. Вы можете использовать ./launcher start-cmd, чтобы вывести эту информацию. Файл app.yml используется только для сборки образа. Эти переменные не встраиваются в контейнер. Я почти уверен, что если вы каким-либо образом передадите эти переменные окружения в ваш контейнер, всё заработает так, как вы хотите.
Я никогда не делал установку ECS, но похоже, что скоро мне придётся этим заняться. Буду рад узнать, получится ли у вас.