当前位置 : 主页 > 编程语言 > 其它开发 >

docker-compose 使用举例

来源:互联网 收集:自由互联 发布时间:2022-06-30
参考地址:https://docs.docker.com/compose/compose-file/#stdin_open 常用配置 示例yaml version: "3"services: symfony_demo: #tty: true #stdin_open: true #entrypoint: /bin/bash image: dev:v4 container_name: con-symfony restart: alway

参考地址:https://docs.docker.com/compose/compose-file/#stdin_open

常用配置
示例yaml
version: "3"
services:
  symfony_demo:
    #tty: true
    #stdin_open: true
    #entrypoint: /bin/bash
    image: dev:v4
    container_name: con-symfony
    restart: always
    privileged: true
    ports:
      - 18000:8000
      - 13306:3306
    volumes: 
      - "/data/con_symfony/my_demo:/data/www/my_demo"
    working_dir: /data/www/my_demo
    command:
      - /bin/bash
      - -c
      - |
        pwd
    #symfony serve
    #/bin/bash
    networks:
      - php_net

networks:
  php_net:
    driver: bridge

  1. command 块执行如果需要执行多个命令,就按照上面的 bash -c 的方式传递变量
  2. 最主要的services 块,包含了service名称以及下面的不同的参数,如restart、privileged、image、container_name、volumes、ports 等,顺便说一下,在 deploy/replica 里也可以设置容器副本数量,类似k8s 里的deploymet 里设置pod 数量。
使用问题: 问题:docker-compose 编排容器,启动后执行完命令,容器就退出不运行了,如何让容器一直运行。

解决方案:

  1. 使用 循环,重复执行某个命令。如while,sleep等。

  2. 使用需要手动中断的命令。如tail -f something,python3 manager.py runserver 0.0.0.0:10000, symfony server:start 等。

  3. 最后一条命令使用/bin/bash,这个是需要配合 tty 和stdin_open 参数使用,任意一个或者两个都配置。这个方案体现出来就是使用 docker-compose down 命令的时候要比 前两种方案慢。

    version: "3"
    services:
       api:
         stdin_open: true
         tty: true			
         build: .
         image: your_image_name
         container_name: your_container_name
         restart: always
         ports:
           - "80:80"     
         command:
           - /bin/bash
           - -c
           - |
    		  cmd1
    		  cmd2
    		  cmd3
              /bin/bash  # 如果这行注释掉则会导致问题的产生
    

留个问题,这里面的 entrypoint 参数作用是什么?和dockerfile 里的区别?

上一篇:动作捕捉系统用于苹果采摘机器人
下一篇:没有了
网友评论