docker - 如何将 Deployer 与 Docker (Laradock) 一起使用

标签 docker docker-compose laradock php-deployer docker-exec

我创建了一个带有 Docker 的新 Digital Ocean 服务器(使用 Laradock ),并且我的 Laravel 网站运行良好。

现在我想使用 Deployer 自动化我的部署.

我认为我唯一的问题是我无法让 Deployer 运行 docker exec -it $(docker-compose ps -q php-fpm) bash; ,这是我成功手动输入相应 Docker 容器的命令(在使用 SSH 从我的本地计算机连接到 Digital Ocean 服务器之后)。

当 Deployer 尝试运行它时,我收到此错误消息:

➤ Executing task execphpfpm
[1.5.6.6] > cd /root/laradock && (pwd;)
[1.5.6.6] < /root/laradock
[1.5.6.6] > cd /root/laradock && (docker exec -it $(docker-compose ps -q php-fpm) bash;)
[1.5.6.6] < the input device is not a TTY
➤ Executing task deploy:failed
• done on [1.5.6.6]
✔ Ok [3ms]
➤ Executing task deploy:unlock
[1.5.6.6] > rm -f ~/daily/.dep/deploy.lock
• done on [1.5.6.6]
✔ Ok [188ms]

In Client.php line 99:

  [Deployer\Exception\RuntimeException (1)]
  The command "cd /root/laradock && (docker exec -it $(docker-compose ps -q php-fpm) bash;)" failed.

  Exit Code: 1 (General error)

  Host Name: 1.5.6.6

  ================
  the input device is not a TTY

这是我的deploy.php的相关部分:

host('1.5.6.6')
        ->user('root')
        ->identityFile('~/.ssh/id_rsa2018-07-09')
        ->forwardAgent(true)
        ->stage('production')
        ->set('deploy_path', '~/{{application}}');

before('deploy:prepare', 'execphpfpm');

task('execphpfpm', function () {
    cd('/root/laradock');
    run('pwd;');
    run('docker exec -it $(docker-compose ps -q php-fpm) bash;');
    run('pwd');
});

我已经花了一天半的时间阅读了无数文章并尝试了许多不同的变体。例如。替换 -it带有 -i 的标志,或设置export COMPOSE_INTERACTIVE_NO_CLI=1或更换整个docker exec命令 docker-compose exec php-fpm bash; .

我希望我错过了一些相当简单的东西。 Docker 被广泛使用,Deployer 似乎也很受欢迎。

最佳答案

要使用 Laravel Deployer,您应该通过 ssh 直接连接到工作区容器。

您可以公开容器的 ssh 端口: https://laradock.io/documentation/#access-workspace-via-ssh

假设您已将容器 ssh 端口 22 转发到虚拟机端口 2222。在这种情况下,您需要将 Deployer 配置为使用端口 2222。

另请记住设置正确的安全 SSH key ,而不是默认 key 。

关于docker - 如何将 Deployer 与 Docker (Laradock) 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274489/

相关文章:

laravel - 如何编辑由 Laradock 工作区生成的文件

docker - docker 中的Fiware Orion挂起

elasticsearch - Docker容器之间的通讯出现问题

docker - Docker构建(MacOS与Ubuntu)

postgresql - 构建dockerfiile是可行的,但是从compose引用它并运行它失败。不确定是不是dockerfile文件路径错误?

docker - 如何在docker-compose服务中更新celery worker ,但保持长时间运行的任务处于事件状态,直到完成

laravel - 我可以从laradock创建单个Dockerfile吗?

windows - docker-machine:没有机器名,不存在 "default"

docker - 动态地将参数传入 `docker-compose.yml`

php - Laradock:本地主机上的多个项目