docker-compose运行

预计阅读时间:2分钟

Usage:
    run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...]
        SERVICE [COMMAND] [ARGS...]

Options:
    -d, --detach          Detached mode: Run container in the background, print
                          new container name.
    --name NAME           Assign a name to the container
    --entrypoint CMD      Override the entrypoint of the image.
    -e KEY=VAL            Set an environment variable (can be used multiple times)
    -l, --label KEY=VAL   Add or override a label (can be used multiple times)
    -u, --user=""         Run as specified username or uid
    --no-deps             Don't start linked services.
    --rm                  Remove container after run. Ignored in detached mode.
    -p, --publish=[]      Publish a container's port(s) to the host
    --service-ports       Run command with the service's ports enabled and mapped
                          to the host.
    --use-aliases         Use the service's network aliases in the network(s) the
                          container connects to.
    -v, --volume=[]       Bind mount a volume (default [])
    -T                    Disable pseudo-tty allocation. By default `docker-compose run`
                          allocates a TTY.
    -w, --workdir=""      Working directory inside the container

针对服务运行一次性命令。例如,以下命令启动web服务并bash作为其命令运行。

docker-compose run web bash

您与runstart一起使用的命令在新容器中启动,该容器具有由服务的配置定义的配置,包括卷,链接和其他详细信息。但是,有两个重要区别。

首先,传递的命令将run覆盖服务配置中定义的命令。例如,如果 web服务配置以开头bash,则用docker-compose run web python app.py覆盖它python app.py

第二个区别是该docker-compose run命令不会创建服务配置中指定的任何端口。这样可以防止端口与已经打开的端口发生冲突。如果确实要创建服务的端口并将其映射到主机,请指定--service-ports标志:

docker-compose run --service-ports web python manage.py shell

另外,也可以使用--publish-p选项指定手动端口映射,就像使用时一样docker run

docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell

如果启动使用链接配置的服务,则该run命令首先检查链接服务是否正在运行,如果停止,则启动该服务。一旦所有链接的服务都在运行,则runexec将执行您传递的命令。例如,您可以运行:

docker-compose run db psql -h db -U docker

这将为链接的db容器打开一个交互式PostgreSQL shell 。

如果您不希望run命令启动链接的容器,请使用--no-deps标志:

docker-compose run --no-deps web python manage.py shell

如果要在覆盖容器的重新启动策略的情况下运行后除去该容器,请使用--rm标志:

docker-compose run --rm web python manage.py db upgrade

这将运行数据库升级脚本,并在完成运行后删除容器,即使在服务配置中指定了重新启动策略也是如此。

无花果组成撰写码头工人编排cli运行