Архитектура многоконтейнерной 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 плохой шлюз

0 ответов

Другие вопросы по тегам