Контейнер Docker не настроен

#python #docker

#python #docker

Вопрос:

Я работаю с инструментом Python, который использует docker для управления проектами. Я запускаю процесс установки с помощью команды,

 $ bin/butler.py setup
  

Прошло без проблем, но когда я пытаюсь установить новые плагины PHP с помощью composure , инструмент не находит сам контейнер.

Итак, мой вывод заключается в том, что инструмент изначально не создает контейнер должным образом.

Ниже я описываю процесс настройки. После первоначальной настройки это начинается здесь,

     # all done

    print("pull doker images images")
    self.docker.compose_pull(self.local_yml)
    print("create containers")

    self.docker.compose_setup(self.local_yml)
    print("setup completed")
  

Это общая команда для выполнения docker. Я знаю, что в нем есть ошибка безопасности, но на данный момент это не проблема.

 def compose(self, params, yaml_path="docker-compose.yml"):
    """ execte docker-compose commmand """
    cmd = f"docker-compose -f {yaml_path} {params}"
    print(cmd)
    try:
        subprocess.run(cmd, shell=True, check=True)
    except Exception:
        pass

   def compose_pull(self, yaml_path):
       self.compose("pull --ignore-pull-failures", yaml_path)
   
   def compose_setup(self, yaml_path):
       self.compose(f"--project-name {self.project_name} up --no-start ", yaml_path)
  

Распечатка содержит команды,

 pull doker images images

# We use a docker-compose.yml and perform the pull operation
docker-compose -f /Users/chaklader/PycharmProjects/Welance-Craft-Starter/build/docker-compose.yml pull --ignore-pull-failures
Pulling database ... 
Pulling craft    ... 
create containers

# We use a docker-compose.yml and perform the up operation for the project

docker-compose -f /Users/chaklader/PycharmProjects/Welance-Craft-Starter/build/docker-compose.yml --project-name p13-27 up --no-start 
Creating network "p13-27_default" with the default driver
Creating p13-27_database ... 
Creating p13-27_craft    ... 
setup completed
  

docker-compose.yml Файл предоставлен,

 services:
  craft:
    container_name: p13-27_craft
    environment:
      CRAFT_ALLOW_UPDATES: 'false'
      CRAFT_DEVMODE: 1
      CRAFT_EMAIL: admin@welance.de
      CRAFT_ENABLE_CACHE: 0
      CRAFT_LOCALE: en_us
      CRAFT_PASSWORD: welance
      CRAFT_SITENAME: Welance
      CRAFT_SITEURL: //localhost
      CRAFT_USERNAME: admin
      DB_DATABASE: craft
      DB_DRIVER: mysql
      DB_PASSWORD: craft
      DB_PORT: '3306'
      DB_SCHEMA: public
      DB_SERVER: database
      DB_TABLE_PREFIX: craft_
      DB_USER: craft
      ENVIRONMENT: dev
      HTTPD_OPTIONS: ''
      LANG: C.UTF-8
      SECURITY_KEY: some_key_:)
    image: welance/craft:3.1.17.2
    links:
    - database
    ports:
    - 80:80
    volumes:
    - /var/log
    - ./docker/craft/conf/apache2/craft.conf:/etc/apache2/conf.d/craft.conf
    - ./docker/craft/conf/php/php.ini:/etc/php7/php.ini
    - ./docker/craft/logs/apache2:/var/log/apache2
    - ./docker/craft/adminer:/data/adminer
    - ../config:/data/craft/config
    - ../templates:/data/craft/templates
    - ../web:/data/craft/web
  database:
    command: mysqld --character-set-server=utf8  --collation-server=utf8_unicode_ci
      --init-connect='SET NAMES UTF8;'
    container_name: p13-27_database
    environment:
      MYSQL_DATABASE: xyz
      MYSQL_PASSWORD: xyz
      MYSQL_ROOT_PASSWORD: xyz
      MYSQL_USER: xyz
    image: mysql:5.7
    volumes:
    - /var/lib/mysql
version: '3.1'
  

В резюме мой базовый образ является welance/craft:3.1.17.2 , и я использую его для создания контейнера с именем p13-27_craft . Дополнительная конфигурация предусмотрена в docker-compose.yml файле, и я запускаю команду pull and up с помощью docker.

Я думаю, что контейнер сам по себе не создан. Например, я предоставил данные для идентификатора клиента 15 и идентификатора проекта 55, и в распечатке указано информирует Creating p15-55_craft ... done .

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

 $ docker ps 
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                 NAMES
cf2ea4638772        welance/craft:3.1.17.1   "/data/scripts/run-c…"   37 minutes ago      Up 37 minutes       0.0.0.0:80->80/tcp    p13-17_craft
4504ae62035f        mysql:5.7                "docker-entrypoint.s…"   About an hour ago   Up About an hour    3306/tcp, 33060/tcp   p13-17_database
518e3535859b        mysql:5.7 
  

Таким образом, информация из печати неверна, и контейнер не создан в первую очередь.

Как мне исследовать, в чем здесь проблема и почему контейнер не создается?

Спасибо.

Комментарии:

1. «Все прошло без проблем, но когда я пытаюсь установить новые плагины Php с помощью composure, инструмент не находит сам контейнер». Как вы устанавливаете плагины php и какую ошибку это вызывает?

2. Инструмент не находит контейнер, и ошибка возникает оттуда. Не могли бы вы, пожалуйста, перечитать вопрос? Я обновил его из выходных данных $ docker ps

3. попробуйте docker ps -a , может быть завершен

4. Кроме того, согласно документам , --no-start: Don't start the services after creating them.

5. @C.Nivs вы правы. Команда docker ps -a сообщает, что контейнеры созданы, но также завершаются после этого. Вы знаете, почему это происходит?

Ответ №1:

Избавьтесь от --no-start опции и добавьте -d флаг для запуска в качестве демона (фоновый процесс). Если я запущу свое собственное решение:

 docker-compose up --no-start
Creating alerts-cache ... done
Creating mongoClientTemp ... done
Creating apilayer_alerts-api_1 ... done

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
  

Ничего не найдено, хотя мои контейнеры созданы.

 docker-compose up -d
Starting alerts-cache ... done
Starting mongoClientTemp ... done
Starting apilayer_alerts-api_1 ... done

docker ps
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS              PORTS                      NAMES
af557a2add73        bdsdev.azurecr.io/rva_flask    "python app.py alert…"   2 minutes ago       Up 1 second         0.0.0.0:5000->5000/tcp     apilayer_alerts-api_1
829da0fabe62        bdsdev.azurecr.io/temp_mongo   "docker-entrypoint.s…"   2 minutes ago       Up 2 seconds        27017/tcp                  mongoClientTemp
cdb67a305233        mongo
  

Комментарии:

1. Ваш ответ помогает мне. Спасибо.

Ответ №2:

Как мне исследовать, в чем здесь проблема и почему контейнер не создается?

Ваша конфигурация кажется правильной и docker-compose не сообщает о какой-либо ошибке, вероятно, ваш контейнер был создан, но либо не был запущен, либо вышел сразу после запуска. Вы используете, docker ps который показывает только запущенный контейнер, вы, вероятно, увидите свой отсутствующий контейнер при запуске docker ps -a .

docker-compose не будет сообщать о какой-либо ошибке, если контейнер создан (и запущен) успешно, но вышел сразу после запуска. Если вы видите свой контейнер с помощью docker ps -a , попробуйте запустить docker logs <container name> , чтобы узнать, почему ваш контейнер вышел. Шаг для последующего решения проблем будет зависеть от того, как работает ваш контейнер.