Архитектура многоконтейнерной Docker-CMS wordpress без головы с интерфейсом Next.js в AWS Elastic Beanstalk
Я создаю автономный веб-сайт с использованием Wordpress для CMS и интерфейса Next.js. Я использую решение AWS Elastic Beanstalk Multi-container, но мне трудно понять, как мне структурировать этот проект и как использовать другие веб-службы Amazon.
Мой Dockerrun.aws.json
в настоящее время есть 3 контейнера: приложение next.js из моего собственного репозитория Dockerhub, официальный образ Wordpress, который использует переменные ENV для подключения к базе данных RDS, и Nginx.
Проблема в том, что мне нужно заменить wp-content
папку целиком - как мне это сделать и какую структуру или архитектуру я должен принять? Как мне это автоматизировать?
Если в итоге у меня есть несколько настраиваемых файлов Docker, как мне автоматизировать весь процесс? Я знаю, что AWS EB требует предварительно созданных образов. Заранее спасибо.
Это мой текущий Dockerrun.aws.json
:
{
"AWSEBDockerrunVersion": 2,
"volumes": [
{
"name": "nextjs-app",
"host": {
"sourcePath": "/var/app/current/nextjs-app"
}
},
{
"name": "wordpress",
"host": {
"sourcePath": "/var/app/current/wp"
}
},
{
"name": "nginx-proxy-conf",
"host": {
"sourcePath": "/var/app/current/proxy/conf.d"
}
}
],
"containerDefinitions": [
{
"name": "nextjs-app",
"image": "myrepo/nextjs-app",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 3000,
"containerPort": 3000
}
],
"mountPoints": [
{
"sourceVolume": "nextjs-app",
"containerPath": "/var/www/nextjs-app",
"readOnly": true
}
]
},
{
"name": "wordpress",
"image": "wordpress",
"essential": true,
"memory": 128,
"environment": [
{
"name": "WORDPRESS_DB_HOST",
"value": "${WORDPRESS_DB_HOST}"
},
{
"name": "WORDPRESS_DB_USER",
"value": "${WORDPRESS_DB_USER}"
},
{
"name": "WORDPRESS_DB_PASSWORD",
"value": "${WORDPRESS_DB_PASSWORD}"
},
{
"name": "WORDPRESS_DB_NAME",
"value": "${WORDPRESS_DB_NAME}"
}
]
},
{
"name": "nginx-proxy",
"image": "nginx",
"essential": true,
"memory": 128,
"portMappings": [
{
"hostPort": 80,
"containerPort": 80
}
],
"links": ["nextjs-app", "wordpress"],
"mountPoints": [
{
"sourceVolume": "nextjs-app",
"containerPath": "/var/www/nextjs-app",
"readOnly": true
},
{
"sourceVolume": "wordpress",
"containerPath": "/var/www/wordpress",
"readOnly": true
},
{
"sourceVolume": "awseb-logs-nginx-proxy",
"containerPath": "/var/log/nginx"
},
{
"sourceVolume": "nginx-proxy-conf",
"containerPath": "/etc/nginx/conf.d",
"readOnly": true
}
]
}
]
}
На самом деле это не работает, я портирую приложение Next.js прямо в файл Dockerrun, а порт Wordpress в nginx получает 502 плохой шлюз