我不明白如何正确地部署它。
我想做什么?
现在发生了什么?
COPY docker/id_docker /home/docker/.ssh/id_rsa
COPY docker/id_docker.pub /home/docker/.ssh/id_rsa.pub
COPY docker/known_hosts /home/docker/.ssh/known_hosts
RUN eval "$(ssh-agent)" && ssh-agent -s
RUN if [ "$BUILD_ENV" = "production" ] ; then cd $APP_HOME && git clone git@bitbucket.org:laravel.git; fi
RUN if [ "$BUILD_ENV" = "production" ] ; then cd $APP_HOME/laravel && composer install; fi
RUN if [ "$BUILD_ENV" = "production" ] ; then cd $APP_HOME/laravel && cp .env.example .env; fi
RUN if [ "$BUILD_ENV" = "production" ] ; then cd $APP_HOME/laravel && php artisan key:generate; fi但我知道不应该这样
所以我需要一些帮助如何部署它?我应该用Jenkins或者可能存在dokku文件,比如Pecilfile或者.?
发布于 2018-04-19 13:30:35
好吧,我决定:
{ "name": "laravel", "description": "laravel app on Dokku/Heroku.", "keywords": [ "laravel", "dokku", "heroku" ], "scripts": { "dokku": { "predeploy": "dokku/predeploy.sh", "postdeploy": "dokku/postdeploy.sh" } } }dokku文件夹位于项目根目录中。
重要的是-在predeploy.sh中运行composer安装时出现了问题。Laravel可能会在服务器或坏的.env文件中更改一些内容。因此,它从Dockerfile构建并安装composer deps。然后,dokku等待10秒来检查容器是否正常,但是它失败了一些方法,并且没有打印错误。;/
因此,如果您知道app.json预部署可能有什么问题,请写注释:)
现在我有个好消息。我终于知道出了什么问题。默认情况下,dokku的入口指向init.sh,而我的docker项目中的这个文件不存在。因此,指定Dockerfile的入口点很重要。就我而言,它是:
`ENTRYPOINT [""] CMD ["dumb-init", "php", "src/tokara-auto-laravel/artisan", "serve", "--host", "0.0.0.0", "--port", "8000"]` 并且不要忘记创建app.json文件。如果您在Dockerfile中指定,而不是默认的WORKDIR,那么您可以在Dockerfile中编写类似这样的内容:
`WORKDIR /home/docker COPY app.json /home/docker COPY dokku /home/docker/dokku` 我的app.json:
`{ "name": "laravel", "description": Llaravel app on Dokku/Heroku.", "keywords": [ "laravel", "dokku", "heroku" ], "scripts": { "dokku": { "predeploy": "/home/docker/dokku/predeploy.sh", "postdeploy": "/home/docker/dokku/postdeploy.sh" } } }`https://stackoverflow.com/questions/48937085
复制相似问题