Bash Docker图像相同,但工作方式不同
我需要为我的symfony项目创建一个带有Bitbucket管道的部署系统。 如果要使用管道,则需要使用docker映像。 我已通过以下方式配置管道:Bash Docker图像相同,但工作方式不同,bash,docker,deployment,bitbucket,symfony,Bash,Docker,Deployment,Bitbucket,Symfony,我需要为我的symfony项目创建一个带有Bitbucket管道的部署系统。 如果要使用管道,则需要使用docker映像。 我已通过以下方式配置管道: image: laraedit/laraedit pipelines: branches: testing: - step: script: - rm -rf var/cache/ - composer install
image: laraedit/laraedit
pipelines:
branches:
testing:
- step:
script:
- rm -rf var/cache/
- composer install
- mkdir -p ~/.ssh
- cat my_known_hosts >> ~/.ssh/known_hosts
- (umask 077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa)
- cp app/config/parameters.yml.test.dist app/config/parameters.yml
- chmod -R 777 var/
- export TERM=xterm-256color
- ./runtest.sh
# - many other commands
当我按下branchtesting
时,管道开始在内部破裂。/runtest.sh,错误为500(我可以检索到它,因为它是bitbucket的docker)
在./runtest.sh内部,有以下命令用于启动我的应用程序的测试:
rm -rf var/cache/tests/
bin/console doctrine:database:drop --env=test
bin/console doctrine:database:create --env=test
bin/console doctrine:schema:update --force --env=test
bin/console doctrine:fixtures:load --no-interaction --env=test
./vendor/bin/phpunit
因此,我查看了Bitbucket内部文档,发现了如何使用以下命令在本地测试docker映像:
docker run -it --volume=/Users/my_username/my_site/:/localDebugRepo --workdir="/localDebugRepo" --memory=4g --entrypoint=/bin/bash laraedit/laraedit
我已经在本地进行了尝试,当我使用bash进入docker映像时,我已经在管道中编写了所有脚本命令,以便:
rm -rf var/cache/
composer install
mkdir -p ~/.ssh
cat my_known_hosts >> ~/.ssh/known_hosts
(umask 077 ; echo $MY_SSH_KEY | base64 --decode > ~/.ssh/id_rsa)
cp app/config/parameters.yml.test.dist app/config/parameters.yml
chmod -R 777 var/
export TERM=xterm-256color
./runtest.sh
神奇的测试通过!!!
但是是同一个Bitbucket docker映像,我预计./runtest.sh将被中断以检查500内部错误服务器,但没有错误,./runtest.sh通过,并且在本地我的docker映像中一切正常(与Bitbucket docker映像的配置相同)
那么,如果docker图像相同,我的docker图像本地和Bitbucket docker图像之间的差异是什么
我需要检查原因。/runtest.sh break,但它仅在Bitbucket docker图像中中断您是否看到正在执行的命令的日志?您的测试是否可能依赖于正在本地运行的Web服务器或其他东西?是的,我看到了命令日志,但没有显示500错误的描述。本地和在线服务器内部都是相同的Web服务器也许为了调试,您可以在管道脚本中添加
tail var/log/error.log
之类的内容我已经尝试过了,但似乎不起作用,tail不向我显示任何行方法必须有所不同,您是在本地使用链接容器还是类似的东西?您是否有项目所需的从git中排除的文件?您可以尝试将repo克隆到一个新文件夹中(管道将使用这个文件夹),并在那里执行相同的调试过程。然后您可以确定您使用的是相同的文件