执行命令即可: docker run dnmp_php80 php bin/laravels start

 docker ps -a | grep dnmp_php

 docker ps -a | grep dnmp_php

$ docker exec -it ca3cefe23585 php -v
the input device is not a TTY.  If you are using mintty, try prefixing the command with 'winpty'

出现 "the input device is not a TTY" 的错误通常表明你正在尝试在没有TTY(终端设备)的情况下运行一个需要交互的命令。在Windows环境下,特别是如果你使用的是Git Bash或者MinGW这样的终端,可能需要额外的工具来处理TTY的分配。

错误信息中还提到了 winpty,这是一个工具,可以在Windows的伪终端中运行需要TTY的程序。如果你在MinGW或Git Bash中使用 docker exec -it,你可能需要使用 winpty 前缀来执行需要交互的命令。

winpty docker exec -it ca3cefe23585 php -v

 

$ winpty docker exec -it ca3cefe23585 bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown

What's next?
  Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug ca3cefe23585
  Learn more at https://docs.docker.com/go/debug-cli/

命令 winpty docker exec -it ca3cefe23585 sh -c 'php /www/allen/xuechuangIM/bin/laravels info && exec sh' 的目的是在 Docker 容器 ca3cefe23585 中执行两个操作:

  1. 运行 php /www/allen/xuechuangIM/bin/laravels info:这条命令会执行 PHP 脚本 /www/allen/xuechuangIM/bin/laravels 并传递 info 参数,可能是为了获取有关 Laravel Swoole 服务器的信息。

  2. && exec sh:在成功执行前面的 PHP 脚本后(即 laravels info 命令成功返回后),通过 && 连接符执行 exec sh。这会将当前的 shell 进程替换为一个新的 sh 进程,从而提供一个交互式 shell,让你能够继续在容器中进行操作。

这里有几个要点需要注意:

  • winpty:这是在 Windows 上使用的一个工具,它允许你在 Windows 的命令行环境中使用 pty(伪终端)兼容的程序,比如 Unix 风格的 shell。这对于在 Windows 上使用 Docker Toolbox 的用户尤为重要,因为 Docker Toolbox 使用的是 Git Bash 或类似的 shell。

  • docker exec -it:docker exec 命令用于在正在运行的容器中执行命令。-it 选项确保命令以交互模式运行,并分配一个伪终端,以便你可以看到命令的输出并与之交互。

  • sh -c:这允许你在 shell 中执行一个字符串形式的命令。在这种情况下,它执行了 PHP 脚本和一个 shell 替换命令。

总的来说,这条命令首先会打印出 Laravel Swoole 服务器的相关信息,然后为你提供一个可以在容器内部进行交互的 shell。如果你在 Windows 上使用 Docker,并且想要方便地查看 Laravel Swoole 信息并进入容器的 shell 环境,这条命令会非常有用。

更多推荐