Я уже несколько дней бьюсь об это головой и не могу понять последний шаг. Я пытаюсь развернуть приложение nodejs как часть настройки нескольких контейнеров для эластичного beanstalk.
Кажется, все работает, но когда я загружаю новую версию приложения (eb deploy), среда не выполняет docker pull, чтобы получить новейшую версию контейнера. Вместо этого используется изображение, хранящееся на машине, которое содержит старый код приложения.
Мой файл Dockerrun.aws.json:
{
"AWSEBDockerrunVersion": 2,
....
"определения контейнера": [
{
"имя": "ядро",
"image": "xxx/ядро:последний",
"имя хоста": "ядро",
«необходимый»: правда,
"сопоставления портов": [
{
"хостПорт": 80,
"контейнерный порт": 8012
}
],
"ссылки": ["редис"],
"память": 600
},
{
"имя": "редис",
"image": "redis:6.2-alpine",
"имя хоста": "редис",
«необходимый»: правда,
"память": 300,
"сопоставления портов": [
{
"хостПорт": 6379,
"КонтейнерПорт": 6379
}
],
}
]
}
Мой файл сборки кода (buildspec.yml)
версия: 0.2
фазы:
строить:
команды:
- echo Сборка началась `дата`
- echo Сборка производственного образа Docker...
- эхо "$DOCKER_PW" | вход в докер -u "$DOCKER_ID" --пароль-стандартный ввод
- сборка докера -t xxx/core .
пост_сборка:
команды:
# Возьмите эти образы и отправьте их в Docker Hub
- докер толкает ххх/ядро
артефакты:
файлы:
- Dockerrun.aws.json
- .ebextensions/**/*
Я проверил, что новый образ загружается при каждом развертывании (работает!). Я проверил, что eb загружает последнюю версию файла Dockerrun (работает!) Я даже «по-видимому» вижу, что загрузки образа увеличиваются на docker-hub, но когда я ssh на машине, сохраняемый образ старый. Я застрял!
Я так рад за любую помощь.