首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Dokku部署Laravel

用Dokku部署Laravel
EN

Stack Overflow用户
提问于 2018-02-22 21:01:59
回答 1查看 1.7K关注 0票数 0

我不明白如何正确地部署它。

我想做什么?

  1. 我所有的Laravel项目都应该在bitbucket中(这里也是用于本地部署的Dockerfile );
  2. 当我使用dokku进行部署时,它应该从bitbucket部署Laravel项目,并运行Laravel应用程序命令:迁移、种子等。

现在发生了什么?

  1. Dokku从bitbucket构建了我的Laravel应用程序,并加载Docerfile。因此,我在Dockerfile中添加了如下内容:
代码语言:javascript
复制
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或者.?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-19 13:30:35

好吧,我决定:

  1. 首先,它是app.json文件。当从Dockerfile构建、完成构建时,它的运行、预部署和后置部署。 { "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秒来检查容器是否正常,但是它失败了一些方法,并且没有打印错误。;/

  1. 接下来我做了什么。为laravel创建具有主图像的Dockerfile;
  2. 为dokku创建了init.sh以运行php构件迁移、种子、.env等功能;
  3. 创建了rebuild.sh来重建dokku的形象,做一些需要做的事情;

因此,如果您知道app.json预部署可能有什么问题,请写注释:)

现在我有个好消息。我终于知道出了什么问题。默认情况下,dokku的入口指向init.sh,而我的docker项目中的这个文件不存在。因此,指定Dockerfile的入口点很重要。就我而言,它是:

代码语言:javascript
复制
 `ENTRYPOINT [""]     CMD ["dumb-init", "php", "src/tokara-auto-laravel/artisan", "serve", "--host", "0.0.0.0", "--port", "8000"]` 

并且不要忘记创建app.json文件。如果您在Dockerfile中指定,而不是默认的WORKDIR,那么您可以在Dockerfile中编写类似这样的内容:

代码语言:javascript
复制
 `WORKDIR /home/docker     COPY app.json /home/docker     COPY dokku /home/docker/dokku` 

我的app.json:

代码语言:javascript
复制
 `{       "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"             }       }     }`
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48937085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档