参考地址: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
- command 块执行如果需要执行多个命令,就按照上面的 bash -c 的方式传递变量
- 最主要的services 块,包含了service名称以及下面的不同的参数,如restart、privileged、image、container_name、volumes、ports 等,顺便说一下,在 deploy/replica 里也可以设置容器副本数量,类似k8s 里的deploymet 里设置pod 数量。
解决方案:
-
使用 循环,重复执行某个命令。如while,sleep等。
-
使用需要手动中断的命令。如tail -f something,python3 manager.py runserver 0.0.0.0:10000, symfony server:start 等。
-
最后一条命令使用/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 里的区别?