利用 dokku 打造自己的私有云仓库和自动化部署|云服务器 ECS - 开发者论坛

[复制链接]
查看: 50|回复: 0

44

主题

44

帖子

156

积分

注册会员

Rank: 2

积分
156
发表于 2019-2-15 22:53:35 | 显示全部楼层 |阅读模式

<div class="f14 mb10" id="read_tpc">
<span style="display:none"> Dohl,d </span>&nbsp;<br />选择Ubuntu系统,同时做好<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=域名',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_2">域名</span>映射<span style="display:none"> EU&6 Tg </span>&nbsp;<br />安装dokku<span style="display:none"> y^0HCp{ </span>&nbsp;<br /><div class="f12">复制代码</div><div class="blockquote2" id="code1"><ol><li># 选择0.9.4版本,后面的版本都有些问题</li><li>wget https://raw.githubusercontent.com/dokku/dokku/v0.9.4/bootstrap.sh</li><li>sudo DOKKU_TAG=v0.9.4 bash bootstrap.sh</li></ol></div><span style="display:none"> e|OG-t[$* </span>&nbsp;<br />然后打开对应的域名,完成dokku的初始化<span style="display:none"> UpE1PLZlB </span>&nbsp;<br /><span style="display:none"> 2Mv)0%,c </span>&nbsp;<br /><span style="display:none"> ^=heen&lt;S% </span>&nbsp;<br />创建gogs应用,参照 https://dokku.github.io/tutorials/deploying-gogs-to-dokku<span style="display:none"> ~{3o(gzl </span>&nbsp;<br />其中推送代码部分可以用tag部署方式,所有命令如下<span style="display:none"> 75^)Ni </span>&nbsp;<br /><div class="f12">复制代码</div><div class="blockquote2" id="code2"><ol><li>dokku apps:create gogs</li><li>dokku proxy:ports-add gogs http:80:3000</li><li>dokku docker-options:add gogs deploy -p 2222:22</li><li>mkdir -p /var/lib/dokku/data/storage/gogs</li><li>chown -R dokku:dokku /var/lib/dokku/data/storage/gogs</li><li>dokku storage:mount gogs /var/lib/dokku/data/storage/gogs:/data</li><li>dokku plugin:install https://github.com/dokku/dokku-mysql.git mysql</li><li>dokku mysql:create gogs</li><li>dokku mysql:link gogs gogs</li><li># 使用指定版本</li><li>docker pull gogs/gogs:0.11.4</li><li>docker tag gogs/gogs:0.11.4 dokku/gogs:0.11.4</li><li>dokku tags:deploy gogs 0.11.4</li></ol></div>使用 Let’s Encrypt 进行 https 加密<span style="display:none"> %nG~u,_2f </span>&nbsp;<br /><div class="f12">复制代码</div><div class="blockquote2" id="code3"><ol><li>sudo dokku plugin:install https://github.com/dokku/dokku-letsencrypt.git</li><li>dokku config:set --global DOKKU_LETSENCRYPT_EMAIL=xxx@aliyun.com</li><li>dokku letsencrypt gogs</li><li>dokku letsencrypt:cron-job --add</li></ol></div><span style="display:none"> "`8H:y </span>&nbsp;<br />完成之后打开 web 页面完成gogs的install,注意<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=配置',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_5">配置</span>页面的各设置(mysql 的配置地址可以用dokku mysql:info gogs查看。即使设置错了,也可以后期使用dokku enter gogs,在/data/gogs/conf/app.ini中直接修改)。<span style="display:none"> 8as$h*W h </span>&nbsp;<br /><span style="display:none"> uHujw.H/y </span>&nbsp;<br /><span style="display:none"> /S2p``E+ </span>&nbsp;<br />创建drone应用,drone分server端和agent端<span style="display:none"> +lk\oj$S+
</span>&nbsp;<br /><div class="f12">复制代码</div><div class="blockquote2" id="code4"><ol><li># server</li><li>dokku apps:create drone</li><li>dokku mysql:create drone</li><li>dokku mysql:link drone drone</li><li># 暂时不能使用最新版本,坑了很久</li><li># docker pull drone/drone:latest</li><li>docker pull drone/drone:0.7.3</li><li>docker tag drone/drone:0.7.3 dokku/drone:0.7.3</li><li># 配置drone的环境变量</li><li>dokku config:set drone DRONE_OPEN=false DRONE_GOGS_PRIVATE_MODE=true DRONE_DATABASE_DRIVER=mysql DRONE_DATABASE_DATASOURCE=&#39;root:password@tcp(1.2.3.4:3306)/drone?parseTime=true&#39; DRONE_HOST=https://drone.2ci.xin DRONE_GOGS=true DRONE_GOGS_URL=https://gogs.2ci.xin DRONE_SECRET=secret DRONE_ADMIN=username,password</li><li>dokku tags:deploy drone 0.7.3</li><li>dokku proxy:ports-add drone http:80:8000</li><li>dokku proxy:ports-remove drone http:443:443 http:8000:8000 http:80:80</li><li>dokku letsencrypt drone</li><li># agent,暂时不能使用最新版,直接使用docker命令启动,看最新版源码里/ws/broker请求都没有了</li><li># dokku apps:create drone-agent</li><li># docker pull drone/agent:latest</li><li># docker tag drone/agent:latest dokku/drone-agent:latest</li><li>docker run -d -e DRONE_SERVER=wss://drone.2ci.xin/ws/broker -e DRONE_SECRET=password -e DRONE_TIMEOUT=15m -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name=drone-agent-docker drone/drone:0.7.3 agent</li><li># 配置agent的环境变量</li><li># dokku config:set drone-agent DRONE_SERVER=wss://drone.2ci.xin/ws/broker DRONE_SECRET=secret</li><li># dokku storage:mount drone-agent /var/run/docker.sock:/var/run/docker.sock</li><li># dokku tags:deploy drone-agent latest</li></ol></div><span style="display:none"> |P[D2R} </span>&nbsp;<br />检查应用运行情况可使用的命令<span style="display:none"> Pv/%s) &y& </span>&nbsp;<br /><div class="f12">复制代码</div><div class="blockquote2" id="code5"><ol><li>dokku proxy:report app</li><li>dokku proxy:ports-remove app http:80:3000</li><li>dokku proxy:ports-add app http:80:3000</li><li>cat /home/dokku/app/nginx.conf</li><li>dokku ps:stop app</li><li>dokku ps:start app</li></ol></div>创建<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=自',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_4">自</span>己的应用在dokku中创建对应的 app dokku apps:create gift,完成域名映射,配置proxy:ports,使用Let&#39;s encrypt插件进行 https 加密,这些步骤就不多说了。接着在 gogs 中创建对应的一个仓库,记得项目根目录下要有一个.drone.yml文件(参考 http://docs.drone.io/getting-started/ 进行配置),然后提交代码。<span style="display:none"> ,]>`guD V </span>&nbsp;<br />自动发布应用上一步只能使用 drone 进行自动构建,要想将构建后的项目自动打包发布,还需要一些额外的<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=操作',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_6">操作</span>(这里也是坑了自己好久,主要难题是如何将 drone agent 生成的文件发布到 dokku git 里,后来经人提醒可以通过共享 ssh 的方式,然后后续的共享 ssh 的操作也是摸索了好久才成功,可谓一路心酸)。<span style="display:none"> C4X{Ps \ </span>&nbsp;<br />找 1 台虚机生成一份新的 ssh 公私钥对(也可以本地备份原来的,然后重新生成)<div class="f12">复制代码</div><div class="blockquote2" id="code6"><ol><li>ssh-keygen -t rsa -C &quot;dokku-deploy&quot;</li></ol></div>将上一步生成的id_rsa.pub上传至<span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=服务器',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_1"><span onclick="sendmsg('pw_ajax.php','action=relatetag&tagname=服务',this.id)" style="cursor:pointer;border-bottom: 1px solid #FA891B;" id="rlt_3">服务</span>器</span>并添加到 dokku 中<div class="f12">复制代码</div><div class="blockquote2" id="code7"><ol><li># local</li><li>scp ~/.ssh/id_rsa.pub root@2ci.xin:/root/deploy.pub</li><li># server</li><li>dokku ssh-keys:add deploy ./deploy.pub</li></ol></div>项目根目录新建一个ssh目录,然后将上一步生成的 ssh 公私钥复制进去<div class="f12">复制代码</div><div class="blockquote2" id="code8"><ol><li>cp ~/.ssh/id_rsa* ./ssh</li></ol></div>修改原来的.drone.yml,在原来 build 之后添加一些操作<span style="display:none"> C7c|\T </span>&nbsp;<br /><div class="f12">复制代码</div><div class="blockquote2" id="code9"><ol><li>- rm -rf ~/.ssh</li><li>- mkdir -p ~/.ssh</li><li>- cp ssh/* ~/.ssh</li><li>- chmod 600 ~/.ssh/id_rsa # 特别要注意这3行</li><li>- chmod 644 ~/.ssh/id_rsa.pub</li><li>- ssh-keyscan erguotou.me &gt;&gt; ~/.ssh/known_hosts</li><li>- ssh-keyscan 45.77.42.201 &gt;&gt; ~/.ssh/known_hosts</li><li>- echo &#39;FROM ilyasemenov/dokku-static-site&#39; &gt; dist/Dockerfile # 根据自己的项目选择合适的Dockerfile或者实现适合自己项目的Dockerfile,也可以使用buildpacks</li><li>- cd dist</li><li>- git config --global user.email &quot;xxx@aliyun.com&quot;</li><li>- git config --global user.name &quot;xxxoxo&quot;</li><li>- git init</li><li>- git add ./ -A</li><li>- git commit -m &quot;auto build&quot;</li><li>- git remote add dokku dokku@2ci.xin:gift</li><li>- git push -u dokku master --force</li></ol></div>至此就完成了自动化部署的工作,现在就可以访问 https://gift.2ci.xin 了。<span style="display:none"> qKI4p3&E </span>&nbsp;<br /><span style="display:none"> jmZ|b6 </span>&nbsp;<br /><span style="display:none"> cr=FMfhB </span>&nbsp;<br /><span style="display:none"> }fa%JN %E </span>&nbsp;<br /><span style="display:none"> Pvb+ 
</span>&nbsp;<br /><span style="display:none"> }GU6Q|s[u[ </span>&nbsp;<br /><span style="display:none"> .k!k-QO5La </span>&nbsp;<br />
</div>
</div>
<!--content_read-->
</td>
</tr>
<tr>
腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )