我无法理解如何正确部署它。
我想做什么?
现在发生了什么?
Dokku从bitbucket构建我的Laravel应用程序并加载Docerfile。所以我最后在Dockerfile中添加了这样的东西:
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
如果[“$ BUILD_ENV”=“生产”]则运行;然后cd $ APP_HOME&& git clone git@bitbucket.org:laravel.git;网络
如果[“$ BUILD_ENV”=“生产”]则运行;然后cd $ APP_HOME / laravel&&作曲家安装;网络
如果[“$ BUILD_ENV”=“生产”]则运行;然后cd $ APP_HOME / laravel&& cp .env.example .env;网络
如果[“$ BUILD_ENV”=“生产”]则运行;然后cd $ APP_HOME / laravel&& php artisan key:generate;网络
但我知道不应该这样; D
所以我需要一些帮助如何部署它?我应该使用Jenkins或者可能存在像Pecilfile或者......?
这样的dokku文件答案 0 :(得分:0)
好的,我决定:
首先是app.json文件。当从Dockerfile构建完成构建时,它运行predeploy和postdeploy。
{
"name": "laravel",
"description": "laravel app on Dokku/Heroku.",
"keywords": [
"laravel",
"dokku",
"heroku"
],
"scripts": {
"dokku": {
"predeploy": "dokku/predeploy.sh",
"postdeploy": "dokku/postdeploy.sh"
}
}
}
dokku文件夹位于项目根目录中。
!!!!!重要!!!!!! - 运行composer install时,在predeploy.sh中出现了问题。 Laravel可能会更改服务器或坏.env文件中的内容。所以它从Dockerfile构建并安装composer deps。然后dokku等待10秒检查容器是否正常,但它失败一些怎么样,不打印错误。 ; /
因此,如果您知道app.json预部署可能出现的问题,请在评论中写一下:)
----编辑2018-10-20 ----
现在我有个好消息。最后我知道出了什么问题。默认情况下,dokku对init.sh有ENTRYPOINT,而且我的docker项目中的这个文件不存在。因此,为Dockerfile指定ENTRYPOINT非常重要。就我而言,它是:
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"
}
}
}