Назад | Перейти на главную страницу

Нет сетевого подключения к контейнеру Multiple docker в Elastic Beanstalk

Я пытаюсь развернуть контейнер с несколькими докерами на Elastic Beanstalk. Существует два контейнера: один для приложения supervisor + uwsgi + django и один для внешнего интерфейса JavaScript.

Используя docker-compose, он отлично работает локально

Мой файл для создания докеров:

version: '2'

services:
  frontend:
    image: node:latest
    working_dir: "/frontend"
    ports:
      - "3000:3000"
    volumes:
      - ./frontend:/frontend
      - static-content:/frontend/build
    command: bash -c "yarn install && yarn build"
  web:
    build: web/
    working_dir: "/app"
    volumes:
      - ./web/app:/app
      - static-content:/home/docker/volatile/static
    command: bash -c "pip3 install -r requirements.txt && python3 manage.py migrate && supervisord -n"
    ports:
      - "80:80"
      - "8000:8000"
    depends_on:
      - db
      - frontend
volumes:
  static-content:

Образ для nodejs - это официальный образ Docker. Для «Интернета» я использую следующий Dockerfile:

FROM ubuntu:16.04

# Install required packages and remove the apt packages cache when done.
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y \
    python3 \
    python3-dev \
    python3-setuptools \
    python3-pip \
    nginx \
    supervisor \
    sqlite3 && \
    pip3 install -U pip setuptools && \
   rm -rf /var/lib/apt/lists/*

# install uwsgi now because it takes a little while
RUN pip3 install uwsgi

# setup all the configfiles
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
COPY nginx-app.conf /etc/nginx/sites-available/default
COPY supervisor-app.conf /etc/supervisor/conf.d/

EXPOSE 80
EXPOSE 8000

Однако AWS использует свои собственные настройки «компоновки», определенные в файле dockerrun.aws.json, который имеет другой синтаксис, поэтому мне пришлось его адаптировать. Сначала я использовал контейнер-преобразование приложение для создания файла на основе моего docker-compose

Затем мне нужно внести некоторые изменения, например: файл AWS, похоже, не имеет свойства "workdir", поэтому мне пришлось изменить его в соответствии с

Я также опубликовал свое изображение в AWS Elastic Container Registry.

Файл стал таким:

{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
      {
          "command": [
              "bash",
              "-c",
              "yarn install --cwd /frontend && yarn build --cwd /frontend"
          ],
          "essential": true,
          "image": "node:latest",
          "memory": 128,
          "mountPoints": [
              {
                  "containerPath": "/frontend",
                  "sourceVolume": "_Frontend"
              },
              {
                  "containerPath": "/frontend/build",
                  "sourceVolume": "Static-Content"
              }
          ],
          "name": "frontend",
          "portMappings": [
              {
                  "containerPort": 3000,
                  "hostPort": 3000
              }
          ]
      },
      {
          "command": [
              "bash",
              "-c",
              "pip3 install -r /app/requirements.txt && supervisord -n"
          ],
          "essential": true,
          "image": "<my-ecr-image-path>",
          "memory": 128,
          "mountPoints": [
              {
                  "containerPath": "/app",
                  "sourceVolume": "_WebApp"
              },
              {
                  "containerPath": "/home/docker/volatile/static",
                  "sourceVolume": "Static-Content"
              },
              {
                "containerPath": "/var/log/supervisor",
                "sourceVolume": "_SupervisorLog"
              }
          ],
          "name": "web",
          "portMappings": [
              {
                  "containerPort": 80,
                  "hostPort": 80
              },
              {
                  "containerPort": 8000,
                  "hostPort": 8000
              }
          ],
          "links": [
            "frontend"
          ]
      }
  ],
  "family": "",
  "volumes": [
      {
          "host": {
              "sourcePath": "/var/app/current/frontend"
          },
          "name": "_Frontend"
      },
      {
          "host": {
              "sourcePath": "static-content"
          },
          "name": "Static-Content"
      },
      {
          "host": {
              "sourcePath": "/var/app/current/web/app"
          },
          "name": "_WebApp"
      },
      {
        "host": {
            "sourcePath": "/var/log/supervisor"
        },
        "name": "_SupervisorLog"
    }
  ]
}

Но затем после развертывания я вижу это в журналах:

> -------------------------------------                                                                                                                                                                                              /var/log/containers/frontend-xxxxxx-stdouterr.log                     
> 
> -------------------------------------                                                                                                                                                                                              yarn install v1.3.2                                                   
> [1/4] Resolving packages...                                           
> [2/4] Fetching packages...                                            
> info There appears to be trouble with your network connection.
> Retrying...                                                           
> info There appears to be trouble with your network connection.
> Retrying...                                                           
> info There appears to be trouble with your network connection.
> Retrying...                                                           
> info There appears to be trouble with your network connection.
> Retrying...                                                           
> info There appears to be trouble with your network connection.
> Retrying...                                                           
> info There appears to be trouble with your network connection.
> Retrying...                                                           
> info There appears to be trouble with your network connection.
> Retrying...                                                           
> error An unexpected error occurred:
> "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.179.0.tgz:
> ESOCKETTIMEDOUT".

Я попытался увеличить тайм-аут для пряжи ... но ошибка все еще возникает

Я также не могу даже выполнить bash в контейнере (он застревает навсегда) или любую другую команду (то есть: попытаться воспроизвести проблему с пряжей)

И _SupervisorLog, похоже, не отображает в соответствии с этим, папка пуста, и я не могу точно понять, что происходит, или правильно воспроизвести ошибку

Если я пытаюсь перейти по URL-адресу, иногда я получаю Bad Gateway, иногда я даже не понимаю этого. Если я пытаюсь перейти по пути, по которому должен загружаться «интерфейс», я получаю ошибку «запрещено». Чтобы уточнить, это работает нормально, когда я запускаю контейнеры локально с помощью docker-compose.

Я начал использовать Docker недавно, поэтому не стесняйтесь указывать на любую другую проблему, которую вы можете найти в моих файлах.