Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Docker容器未使用cretaed_Python_Docker - Fatal编程技术网

Python Docker容器未使用cretaed

Python Docker容器未使用cretaed,python,docker,Python,Docker,我使用的Python工具使用docker进行项目管理。我使用命令运行安装过程 $ bin/butler.py setup 这个过程无缝地完成了,但是当我尝试使用composure安装新的PHP插件时,该工具找不到容器本身 因此,我的结论是,该工具首先没有正确地创建容器 我将在下面描述设置过程。在初始配置之后,这是它开始的地方 # all done print("pull doker images images") self.docker.compo

我使用的Python工具使用docker进行项目管理。我使用命令运行安装过程

$ bin/butler.py setup
这个过程无缝地完成了,但是当我尝试使用
composure
安装新的PHP插件时,该工具找不到容器本身

因此,我的结论是,该工具首先没有正确地创建容器

我将在下面描述设置过程。在初始配置之后,这是它开始的地方

    # 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
文件中提供,我使用docker运行
pull
up
命令

我认为容器本身并没有被创建。例如,我提供了客户ID 15和项目ID 55的数据,打印输出显示通知
创建p15-55\u工艺。。。完成

当我运行命令查看容器是否从终端创建时,我发现

$ 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 
因此,来自打印的信息是不正确的,并且首先没有创建容器

我如何调查这里的问题是什么,以及为什么容器没有创建

谢谢。

去掉
--no start
选项,添加
-d
标志以后台进程的形式运行。如果我运行自己的解决方案:

docker编写-无需启动
正在创建警报缓存。。。完成
正在创建mongoClientTemp。。。完成
正在创建apilayer\u警报-api\u 1。。。完成
$docker ps
容器ID映像命令已创建状态端口名称
即使创建了我的容器,也找不到任何内容

docker compose up-d
正在启动警报缓存。。。完成
正在启动mongoClientTemp。。。完成
正在启动apilayer\u警报-api\u 1。。。完成
docker ps
容器ID映像命令已创建状态端口名称
af557a2add73 bdsdev.azurecr.io/rva_flask“python app.py alert…”2分钟前上升1秒0.0.0.0:5000->5000/tcp apilayer_alerts-api_1
829da0fabe62 bdsdev.azurecr.io/temp_mongo“docker entrypoint.s…”2分钟前上升2秒27017/tcp mongoClientTemp
cdb67a305233 mongo
我如何调查这里的问题是什么,以及为什么容器会损坏 不创造

您的配置似乎是正确的,
docker compose
不会报告任何错误,这可能是因为您的容器是创建的,但没有启动或启动后立即退出的。您正在使用只显示正在运行的容器的
docker ps
,您可能会通过运行
docker ps-a
看到丢失的容器


docker compose
如果容器创建(并启动)成功,但启动后立即退出,则不会报告任何错误。如果您可以通过
docker ps-a
查看您的容器,请尝试运行
docker日志
查看容器退出的原因。之后解决问题的步骤将取决于容器的工作方式

“整个过程是无缝的,但是当我尝试使用composure安装新的Php插件时,工具找不到容器本身。”你是如何安装Php插件的,它引发了什么错误?工具找不到容器,错误就来自那里。请你重读这个问题好吗?我从
$docker ps
try
docker ps-a
的输出中更新了它,也可以根据退出,
--无启动:创建服务后不要启动服务。
@C.Nivs您是对的。命令
docker ps-a
通知容器已创建,但随后也将退出。你知道为什么会这样吗?你的回答对我有帮助。非常感谢。