Разработка мультиконтейнерной докерской CMS WordPress без заголовка с интерфейсом Next.js в AWS Elastic Beanstalk - PullRequest
0 голосов
/ 17 октября 2019

Я создаю разделенный безголовый веб-сайт, используя Wordpress для CMS и внешний интерфейс Next.js. Я использую мультиконтейнерное решение AWS Elastic Beanstalk, но у меня возникают проблемы, когда я не могу понять, как мне следует структурировать этот проект и как я могу использовать другие веб-сервисы Amazon.

Мой Dockerrun.aws.json в настоящее время имеет 3 контейнера: приложение next.js из моего собственного хранилища Dockerhub, официальный образ Wordpress, который использует ENV vars для подключения к базе данных 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плохой шлюз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...