Rya*_*yan 6 docker docker-compose php-deployer laradock docker-exec
我使用 Docker 创建了一个新的 Digital Ocean 服务器(使用Laradock),并使我的 Laravel 网站运行良好。
\n\n现在我想使用Deployer自动化部署。
\n\n我认为我唯一的问题是我无法让 Deployer 运行docker exec -it $(docker-compose ps -q php-fpm) bash;,这是我成功手动使用进入适当 Docker 容器的命令(在使用 SSH 从我的本地计算机连接到 Digital Ocean 服务器之后)。
当 Deployer 尝试运行它时,我收到以下错误消息:
\n\n\xe2\x9e\xa4 Executing task execphpfpm\n[1.5.6.6] > cd /root/laradock && (pwd;)\n[1.5.6.6] < /root/laradock\n[1.5.6.6] > cd /root/laradock && (docker exec -it $(docker-compose ps -q php-fpm) bash;)\n[1.5.6.6] < the input device is not a TTY\n\xe2\x9e\xa4 Executing task deploy:failed\n\xe2\x80\xa2 done on [1.5.6.6]\n\xe2\x9c\x94 Ok [3ms]\n\xe2\x9e\xa4 Executing task deploy:unlock\n[1.5.6.6] > rm -f ~/daily/.dep/deploy.lock\n\xe2\x80\xa2 done on [1.5.6.6]\n\xe2\x9c\x94 Ok [188ms]\n\nIn Client.php line 99:\n\n [Deployer\\Exception\\RuntimeException (1)]\n The command "cd /root/laradock && (docker exec -it $(docker-compose ps -q php-fpm) bash;)" failed.\n\n Exit Code: 1 (General error)\n\n Host Name: 1.5.6.6\n\n ================\n the input device is not a TTY\nRun Code Online (Sandbox Code Playgroud)\n\n以下是我的相关部分deploy.php:
host(\'1.5.6.6\')\n ->user(\'root\')\n ->identityFile(\'~/.ssh/id_rsa2018-07-09\')\n ->forwardAgent(true)\n ->stage(\'production\')\n ->set(\'deploy_path\', \'~/{{application}}\');\n\nbefore(\'deploy:prepare\', \'execphpfpm\');\n\ntask(\'execphpfpm\', function () {\n cd(\'/root/laradock\');\n run(\'pwd;\');\n run(\'docker exec -it $(docker-compose ps -q php-fpm) bash;\');\n run(\'pwd\');\n});\nRun Code Online (Sandbox Code Playgroud)\n\n我已经花了一天半的时间阅读了无数文章并尝试了许多不同的变体。例如,将-it标志替换为-i,或者将export COMPOSE_INTERACTIVE_NO_CLI=1整个docker exec命令设置或替换为docker-compose exec php-fpm bash;。
我希望我错过了一些相当简单的东西。Docker 被广泛使用,Deployer 似乎也很受欢迎。
\n你应该试试
docker-compose exec -T php-fpm bash;
Run Code Online (Sandbox Code Playgroud)
-T 选项将
禁用伪 tty 分配。默认情况下
docker-compose exec分配 TTY。
| 归档时间: |
|
| 查看次数: |
5709 次 |
| 最近记录: |