我最近开始使用DeployHQ进行原子(零停机)部署,但是遇到了一个主要问题。
我的生产服务器使用Docker(特别是Laradock),这意味着文件位置在容器外部具有一个路径,而在容器内部 中具有不同的路径(对于同一文件)。
所以我的“ Before Release Link” SSH命令不起作用:
cd /apps/laradock/ && docker-compose exec workspace bash -c "cd /var/www/example_project/current/; /var/www/example_project/shared/add_bbucket_key.sh && cd /var/www/example_project/current/; composer install --no-dev; npm install --no-dev; npm run prod; "
因为不是使用/var/www/example_project/current/
,而是使用了DeployHQ变量%release_path%
(如果命令全部成功运行,DeployHQ将把current
符号链接到该路径)。
但是据DeployHQ所知,Docker不存在,因此它认为发布路径类似于/apps/example_project/releases/20191116191147/
而不是/var/www/example_project/releases/20191116191147/
。
我如何实现我的目标?有没有办法使用docker-compose
(或其他方式)来处理传递到容器外路径位置并将其转换为容器内路径位置的方法?