如何在 docker 容器内运行 Symfony 控制台命令

Abd*_*wal 6 console-application docker dockerfile docker-compose symfony-3.4

我正在尝试在 docker 容器内运行 Symfony 3 控制台命令,但无法获得正确的输出。

docker-compose.yaml

version: '3.4'

services:
  app:
    build:
      context: .
      target: symfony_docker_php
      args:
        SYMFONY_VERSION: ${SYMFONY_VERSION:-}
        STABILITY: ${STABILITY:-stable}
    volumes:
      # Comment out the next line in production
      - ./:/srv/app:rw,cached
      # If you develop on Linux, comment out the following volumes to just use bind-mounted project directory from host
      - /srv/app/var/
      - /srv/app/var/cache/
      - /srv/app/var/logs/
      - /srv/app/var/sessions/
    environment:
      - SYMFONY_VERSION

  nginx:
    build:
      context: .
      target: symfony_docker_nginx
    depends_on:
      - app
    volumes:
      # Comment out the next line in production
      - ./docker/nginx/conf.d:/etc/nginx/conf.d:ro
      - ./public:/srv/app/public:ro
    ports:
      - '80:80'

Run Code Online (Sandbox Code Playgroud)

我的控制台命令 docker-compose exec nginx php bin/console

它返回以下响应 the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'

Sou*_*aha 1

从https://docs.docker.com/compose/reference/exec/复制

要禁用此行为,您可以使用 -T 标志来禁用伪 tty 分配。

docker-compose exec -T nginx <command>
Run Code Online (Sandbox Code Playgroud)

或者,将 COMPOSE_INTERACTIVE_NO_CLI 值设置为 1

export COMPOSE_INTERACTIVE_NO_CLI=1
Run Code Online (Sandbox Code Playgroud)

要运行 php bin/console,您需要从应用程序容器运行,如下所示。

docker-compose exec -T app php bin/console