Как исправить выход Docker-контейнера с помощью кода 6? - PullRequest
3 голосов
/ 08 апреля 2019

Context

Я запускаю dockerized ubuntu для приложения Meteor (js) с файлом docker-compose на моем персональном компьютере.Он прикреплен к контейнеру mongo DB.И прокси-контейнер nginx запущен для защиты URL моей разработки с помощью ssl (https).

Изображения Docker

  • ubuntu: ubuntu: 18.04
  • прокси nginx:jwilder / nginx-proxy: alpine
  • mongo: mongo: последние
  • Плюс мое собственное приложение для метеоров локально.

Другие

  • Версия метеора: 1.8.1
  • Версия Docker: 18.09.3, сборка 774a1f4
  • Версия Docker Compose: 1.23.2, сборка 1110ad01

Проблема

Поскольку я остановил свои контейнеры с помощью docker-compose down, когда я перезапускаю их, контейнер моего веб-приложения выходит (с кодом выхода 6) все время.Я не изменял файлы создания docker, так как моя предыдущая docker-compose -f docker-compose.dev.yml --verbose up

Ошибка, отображаемая как docker-compose -f docker-compose.dev.yml --verbose up

compose.cli.verbose_proxy.proxy_callable: docker inspect_container <- ('26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e')
compose.cli.verbose_proxy.proxy_callable: docker wait <- ('26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e')
urllib3.connectionpool._make_request: http://localhost:None "GET /v1.25/containers/26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e/json HTTP/1.1" 200 None
urllib3.connectionpool._make_request: http://localhost:None "POST /v1.25/containers/26d90365fe9a4b0c0eb24cb2c040aa43cf8ec207764f350b6273ee7362d9fe0e/wait HTTP/1.1" 200 30
compose.cli.verbose_proxy.proxy_callable: docker wait -> {'Error': None, 'StatusCode': 6}
compose.cli.verbose_proxy.proxy_callable: docker inspect_container -> {'AppArmorProfile': 'docker-default',
 'Args': [],
 'Config': {'ArgsEscaped': True,
            'AttachStderr': False,
            'AttachStdin': False,
            'AttachStdout': False,
            'Cmd': ['meteor'],
            'Domainname': '',
            'Entrypoint': None,
            'Env': ['ENV_APP_SERVER_USERNAME=app',
...webappContainer exited with code 6

Результат docker ps -a

CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                      PORTS                                      NAMES
26d90365fe9a        xxxxxxxxxx_webapp            "meteor"                 23 minutes ago      Exited (6) 13 seconds ago                                              webappContainer
4073bbfe37cf        mongo                        "docker-entrypoint.s…"   39 minutes ago      Up 14 seconds               0.0.0.0:27017->27017/tcp                   mongoDBContainer
201f0a99d1cf        jwilder/nginx-proxy:alpine   "/app/docker-entrypo…"   2 hours ago         Up 2 hours                  0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx-proxy_nginx-proxy_1

Результат docker logs <container_id>

** нет **

Как?Контейнер даже не запустится.Когда я запускаю Docker, он работает ..

Исходные файлы

  • docker-compose.dev.yml
version: '3'
services:
  webapp:
    container_name: webappContainer
    env_file: .env
    environment:
      VIRTUAL_HOST: mysite.local
      VIRTUAL_PORT: ${PORT}
    build:
      context: ${CONTEXT}
      dockerfile: ${DOCKERFILE}...
    volumes:
      - ${VOLUME}:/usr/src/app
    expose:
      - ${PORT}
    networks:
      - dbAppConnector
      - default
    depends_on:
    - mongodb
  mongodb:...
    container_name: ${MONGO_CONTAINER_NAME}
    image: mongo
    restartmongodb: always
    env_file: .env
    ports:
    - "${MONGO_PORT}:${MONGO_PORT}"..
    networks:
      dbAppConnector:
    volumes:
    - mongo_volume:/data/db
    - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
volumes:
  mongo_volume:
networks:
  default:
    external:
      name: nginx-proxy
  dbAppConnector:


Обратите внимание, что когда я делаю docker-compose config, все переменные .env отображаются правильно.

  • Dockerfile.dev
FROM ubuntu:18.04

# Set environment dir & copy files
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app

# Make host.docker.internal accessible from outside the container (dev only)
# RUN ip -4 route list match 0/0 | awk '{print $3 "host.docker.internal"}' >> /etc/hosts

# Add user to run localy (dev only) the app
RUN addgroup meteoruser &&  useradd -rm -d /home/moff -s /bin/bash -g root -G sudo -u 1000 meteoruser

# Update distribution
RUN apt-get update -q && apt-get clean \
  # Install curl
  && apt-get install curl -y \
  # Install Meteor
  && (curl https://install.meteor.com | sh) \
  # Install node js
  && cd /usr/src/app \
  # replace vx.x.x by meteor node -e 'console.log("I am Node.js %s!", process.version);' output from my project folder.
  && bash -c 'curl "https://nodejs.org/dist/v8.15.1/node-v8.15.1-linux-x64.tar.gz" > /usr/src/app/required-node-linux-x64.tar.gz' \
  && cd /usr/local && tar --strip-components 1 -xzf /usr/src/app/required-node-linux-x64.tar.gz \
  && rm /usr/src/app/required-node-linux-x64.tar.gz \
  && cd /usr/src/app \
  && npm install

RUN cd /usr/src/app && chown -Rh meteoruser .meteor/local
EXPOSE 80
ENV PORT 80
WORKDIR /usr/src/app

USER meteoruser
CMD ["meteor"]

Что я в данный моментпопытался решить проблему

  • Я остановил и удалил все контейнеры, удалил все изображения, удалил все сети и восстановил все.
  • Я проверил свой доступ в интернет (средний пинг: ~ 35 мс).
  • Я попробовал другую версию "Meteor js" (1.8.1, последняя, ​​1.8.0.2) с флагом ?release=1.8.0.2 в части Dockerfile.dev, где я делаю && (curl https://install.meteor.com | sh) \.
  • Я пытался найти документацию по коду 6 при выходе из контейнера, но не нашел ничего релевантного.
  • Он пытался просмотреть журналы, но ни один из них не был доступен для вышедшего контейнера приложения. Xxxxxx_webapp: результат пуст.
  • Я попытался запустить отдельно контейнер xxxxxx_webapp и получил странный результат с docker run xxxxxxx_webapp.
This is your first time using Meteor!
Installing a Meteor distribution in your home directory.
Downloading Meteor distribution

Потребовалось 2+ минуты, чтобы наконец показать:

Retrying download in 5 seconds …
Retrying download in 5 seconds …
Retrying download in 5 seconds …
Retrying download in 5 seconds …

[[[[[ /usr/src/app ]]]]]

=> Started proxy.
=> Started MongoDB.

И поэтому контейнер работает без выхода с отдельной командой docker run ..

Напоминание: все работало нормально в течение 4 + недель, а затем я неожиданно заподозрил, что мое новое интернет-соединение слишком медленное (я переехал из дома родителей 1 неделю назад).

Не могли бы вы, ребята, дать несколько советов?Могу ли я предоставить какую-либо дополнительную информацию, чтобы помочь вам понять, что мне не хватает? Заранее спасибо!

Редактировать

Другие попытки заставить все работать:

  • Я удалил и переустановил все из докера.
  • Я пробовал предыдущую версию приложения, 3 недели назад, которая полностью работала.
  • Я попробовал все, кроме использования другого Wi-Fi.Может ли это работать?Я так не думаю, но на это всегда есть надежда.

1 Ответ

0 голосов
/ 12 апреля 2019

РЕШЕНИЕ

Я удалил e-v-e-r-y-t-h-i-n-g из докера на моем компьютере следующим образом:

Предупреждение. Помните, что при этой процедуре вы потеряете конфигурацию, образы и контейнеры.

  • Сначала я удалил неиспользуемые данные из «системы» с помощью:
sudo docker system prune
  • Затем удалены все сети и тома:
sudo docker volume prune
sudo docker network prune
  • Затем потребовалась полная деинсталляция docker:
apt-get remove --purge docker*
  • тогда мне пришлось убрать док-контейнеры и изображения:
rm -rf /var/lib/docker
  • затем удалите файлы конфигурации, ..
rm -rf /etc/docker
rm /etc/systemd/system/docker.service
rm /etc/init/d/docker
  • Затем удалены пакеты osbolete и orphan:
apt-get autoremove && apt-get autoclean
  • Затем обновите и обновите существующие пакеты
apt-get update && apt-get upgrade

Наконец переустановили docker и docker-compose из:

А на и я заново загрузил из git мой проект, переустановил его с docker-compose up -d:)

Итак, я считаю, что это была проблема конфигурации с докером. К сожалению, я так и не нашел четкого ответа на этот «код выхода 6» ..

Не стесняйтесь поделиться своим решением, если вы когда-нибудь столкнетесь с той же проблемой «код выхода 6», ребята.

...