亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Dokku和Docker的完美配合

Aldous / 3934人閱讀

摘要:我并沒(méi)有直接在另外一個(gè)容器中安裝客戶端,而是直接在服務(wù)器上安裝之前的代碼是用來(lái)獲取指派給數(shù)據(jù)庫(kù)服務(wù)容器的地址,以便連接?,F(xiàn)在我們需要添加配置到現(xiàn)在我們可以啟動(dòng)我們的新服務(wù)。原文鏈接譯文原文和的完美配合,一起來(lái)辯翻譯鐘最龍校對(duì)李穎杰

看到一篇不錯(cuò)的文章,收藏一下:

【編者的話】本文作者介紹了如何在單機(jī)上將Dokku和Docker結(jié)合。Dokku是一個(gè)小型的PaaS平臺(tái),只需使用Git將代碼push到對(duì)應(yīng)的倉(cāng)庫(kù)上就能自動(dòng)觸發(fā)部署,構(gòu)建過(guò)程非常簡(jiǎn)單。但是Dokku對(duì)于用戶來(lái)說(shuō),相當(dāng)于黑盒PaaS,作者想更多的控制部署流程,所以做了一番折騰。不過(guò)在我看來(lái),作者的思路卻不是那么容易理解,雖然解決了問(wèn)題,但卻也違背了初衷,你覺(jué)得了?歡迎一起討論。

Docker允許你以統(tǒng)一的方式來(lái)部署任何類型的應(yīng)用。而Dokku是一個(gè)基于Docker的小型PaaS平臺(tái)。你可以簡(jiǎn)單的將代碼倉(cāng)庫(kù)push到服務(wù)器上,然后讓Dokku來(lái)自動(dòng)構(gòu)建并部署應(yīng)用。

盡管Dokku的自動(dòng)構(gòu)建能力非常強(qiáng)大而且很酷,但有時(shí)候你想要更多的控制應(yīng)用的部署。例如,你可能想將應(yīng)用部署到一個(gè)容器里面,然后訪問(wèn)另一個(gè)運(yùn)行著數(shù)據(jù)庫(kù)的容器。或者你想使用Docker registry上豐富的Docker鏡像。

Dokku有很多社區(qū)貢獻(xiàn)的插件,這些插件可以很好的幫助你實(shí)現(xiàn)這些需求。但是,你可能仍然會(huì)覺(jué)得這工具不是很適合你要做事情。畢竟,Docker的最大優(yōu)勢(shì)之一就是它可以讓你在的生產(chǎn)環(huán)境和開發(fā)環(huán)境運(yùn)行相似或者完全一樣的容器,這也就減少了部署的痛苦。使用Dokku意味著你要放棄了對(duì)應(yīng)用部署的控制。這對(duì)于簡(jiǎn)單的應(yīng)用或者測(cè)試場(chǎng)景來(lái)說(shuō)可以接受,但是對(duì)于比較重要的生產(chǎn)環(huán)境來(lái)說(shuō),你可能就需要奪回這個(gè)控制權(quán)。

現(xiàn)在我有一些項(xiàng)目需要部署,并且我覺(jué)得單臺(tái)服務(wù)器應(yīng)該足夠了。我使用預(yù)定義好的Docker鏡像在生產(chǎn)環(huán)境的服務(wù)器上部署這些項(xiàng)目,同時(shí),我又想使用Dokku,因?yàn)樗С挚焖偻扑痛a到服務(wù)器。為此,我們專門研究了如何在單臺(tái)服務(wù)器上高效的結(jié)合Dokku和Docker。

配置服務(wù)器

我在DigitalOcean上用預(yù)先定義好的Dokku鏡像創(chuàng)建了一個(gè)VPS。令人欣喜的是其版本十分的新,Docker和Dokku都是最新的穩(wěn)定版本。如果你有自己的服務(wù)器,你可以像這樣安裝最新的Docker,然后跟著安裝說(shuō)明安裝Dokku。

使用Dokku來(lái)部署一個(gè)簡(jiǎn)單的應(yīng)用

在安裝好Dokku后,你需要指定應(yīng)用部署的域名,并將域名如mydomain.com寫到/home/dokku/VHOST。

現(xiàn)在Dokku運(yùn)行起來(lái)了,我們需要注冊(cè)開發(fā)機(jī)上的SSH key,這樣我們才好將代碼push到Dokku上。在我們的開發(fā)機(jī)器上運(yùn)行下面的命令:

cat .ssh/id_rsa.pub| ssh root@mydomain.com sshcommand acl-add dokku myname

(myname可以用來(lái)追蹤你的ssh key,方便之后你想刪除)

現(xiàn)在我們可以開始使用Dokku了。要試試是否正??梢詸z出(check out)在本地開發(fā)環(huán)境的一個(gè)Node.js的項(xiàng)目,然后將其push到Dokku:

git clone git@github.com:heroku/node-js-sample.git
cd node-js-sample
git remote add dokku dokku@mydomain.com:test
git push dokku master

現(xiàn)在你應(yīng)該能看到如下輸出:

Counting objects: 381, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (308/308), done.
Writing objects: 100% (381/381), 210.18 KiB | 0 bytes/s, done.
Total 381 (delta 49), reused 373 (delta 44)
-----> Cleaning up ...
-----> Building test ...
-----> Adding BUILD_ENV to build environment...
-----> Node.js app detected
-----> Requested node range: 0.10.x
-----> Resolved node version: 0.10.35
-----> Downloading and installing node
-----> Exporting config vars to environment
-----> Installing dependencies

...

-----> Running post-deploy
-----> Creating new /home/dokku/test/VHOST...
-----> Configuring test.mydomain.com...
-----> Creating http nginx.conf
-----> Running nginx-pre-reload
   Reloading nginx
=====> Application deployed:

http://test.mydomain.com

正如輸出中說(shuō)的一樣,你的應(yīng)用現(xiàn)在部署到了http://test.mydomain.com!

用Docker來(lái)部署一個(gè)WordPress博客

現(xiàn)在我們已經(jīng)知道了如何使用Dokku構(gòu)建應(yīng)用?,F(xiàn)在讓我們來(lái)試試部署一個(gè)預(yù)先定義好的Docker鏡像:我們將要用官方的WordPress Docker鏡像來(lái)部署一個(gè)博客。但在我們搭建一個(gè)新的博客之前,你首先需要搭建好一個(gè)MySQL數(shù)據(jù)庫(kù)服務(wù)器,我是這么做的:

docker run --name mysql --restart=always 
   -e MYSQL_ROOT_PASSWORD=some-secret-string -d mariadb

命令中的--restart=always選項(xiàng)是用來(lái)保證Docker守護(hù)進(jìn)程在容器出錯(cuò)或者重啟后自動(dòng)啟動(dòng)容器。

如果WordPress容器有訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器的root權(quán)限,那它就可以自己設(shè)置數(shù)據(jù)庫(kù),但是我想自己來(lái)配置。我并沒(méi)有直接在另外一個(gè)容器中安裝MySQL客戶端,而是直接在服務(wù)器上安裝:

apt-get install -qqy mysql-client
mysql -h`docker inspect --format "{{ .NetworkSettings.IPAddress }}" mysql` 
  -uroot -p

之前的代碼是用來(lái)獲取指派給數(shù)據(jù)庫(kù)服務(wù)容器的IP地址,以便連接?,F(xiàn)在我可以手動(dòng)為我的新博客搭建好一個(gè)數(shù)據(jù)庫(kù):

CREATE DATABASE myblog;
CREATE USER "myblog"@"%" IDENTIFIED BY "another-password";
GRANT ALL ON myblog.* TO "myblog"@"%";
FLUSH PRIVILEGES;

現(xiàn)在我們可以開始部署WordPress博客了:

docker run --name myblog --link mysql:mysql 
   -e WORDPRESS_DB_USER=myblog -e WORDPRESS_DB_PASSWORD=another-password 
   -e WORDPRESS_DB_NAME=myblog -e VIRTUAL_HOST=blog.mydomain.com 
   --restart=always -d wordpress

現(xiàn)在我們的容器已經(jīng)開始運(yùn)行,我們可以用docker ps來(lái)確認(rèn)。然而,我們只能在服務(wù)器上直接訪問(wèn)80端口,VIRTUAL_HOST的環(huán)境變量顯示了我們真正想要訪問(wèn)的地址,但是這還不能用。

用docker-gen來(lái)做Nginx的反向代理

在服務(wù)器上已經(jīng)有Nginx運(yùn)行了,因?yàn)镈okku的運(yùn)行依賴它?,F(xiàn)在找到我們博客容器的IP,然后在Nignx中配置好域名和IP的對(duì)應(yīng)關(guān)系,這應(yīng)該不難。問(wèn)題在于如果博客容器重啟了,例如服務(wù)器重啟之后,其IP地址就可能改變,然后我們又需要手動(dòng)更新Nginx的配置。

幸運(yùn)的是,有人曾經(jīng)走過(guò)一步,經(jīng)歷過(guò)這樣的折磨,然后弄出了解決方法:docker-gen。這是一個(gè)自動(dòng)構(gòu)建然后更新所有運(yùn)行著的容器的配置文件的工具。

讓我們安裝這個(gè)神奇的工具吧:

cd /tmp
wget https://github.com/jwilder/docker-gen/releases/download/0.3.6/docker-gen-linux-amd64-0.3.6.tar.gz
tar xzf docker-gen-linux-amd64-0.3.6.tar.gz
mv docker-gen /etc/nginx/docker-gen

現(xiàn)在我們需要為我們想生成的Nginx配置文件創(chuàng)建一個(gè)模板。我的配置文件基于jwilder的nginx-proxy,將配置寫到/etc/nginx/docker.template。現(xiàn)在,我們可以運(yùn)行docker-gen,但是如果我們需要在服務(wù)器重啟的時(shí)候自動(dòng)執(zhí)行此命令,那我們需要將docker-gen安裝成一個(gè)service。要做到這一點(diǎn),我們可以將以下腳本寫到/etc/nginx/docker-gen-service:

/etc/nginx/docker-gen-service:
#!/bin/bash
/etc/nginx/docker-gen -only-exposed -watch -notify "service nginx reload" 
  /etc/nginx/docker.template /etc/nginx/sites-enabled/docker_containers

然后讓其可執(zhí)行:chmod +x /etc/nginx/docker-gen-service?,F(xiàn)在我們需要添加upstart配置到/etc/init/docker-nginx.conf:

# docker-nginx - Nginx config generator for Docker containers

description "Nginx config generator for Docker containers"
author "Somebody "
When to start the service

start on filesystem and started docker
When to stop the service

stop on runlevel [016]
Automatically restart process if crashed

respawn
Send output to logfile

console log
Run before process

pre-start script
[ -d /etc/nginx/certs ] || mkdir -p /etc/nginx/certs
end script
Start the process

exec /etc/nginx/docker-gen-service

現(xiàn)在我們可以啟動(dòng)我們的新服務(wù):initctl start docker-nginx。docker-gen會(huì)看著我們所有的Dockder容器,然后更新Nginx文件。它會(huì)檢查每一個(gè)容器的VIRTUAL_HOST環(huán)境變量,還記得我們?cè)诘膯?dòng)WordPress容器的時(shí)候,我們指定了-e VIRTUAL_HOST=blog.mydomain.com選項(xiàng)(如果你想將多個(gè)域名指向同一個(gè)容器,你可以用逗號(hào)分隔:VIRTUAL_HOST=blog.a.com,test.b.com)。因而假設(shè)我們的DNS配置是正確的,我們現(xiàn)在可以訪問(wèn)http://blog.mydomain.com,然后看到熟悉的WordPress的初始化配置界面。

原文鏈接:Dokku and Docker on the same server: power and control
譯文原文:Dokku和Docker的完美配合,一起來(lái)辯
(翻譯:鐘最龍 校對(duì):李穎杰)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/26386.html

相關(guān)文章

  • 進(jìn)軍Docker 1.12,將代理與Swarm完美整合

    摘要:其一將用于代理與面向公開的服務(wù)之間的通信。數(shù)據(jù)庫(kù)上線并開始運(yùn)行后,我們接下來(lái)部署后端?,F(xiàn)在,會(huì)幫助我們完成全部負(fù)載均衡工作。這樣所有來(lái)自代理的請(qǐng)求都將指向網(wǎng)絡(luò),并由后者跨越全部實(shí)例執(zhí)行負(fù)載均衡。 七夕大家過(guò)得怎么樣?今天數(shù)人云帶大家回歸技術(shù)和干貨。雖然我們能夠在Swarm集群當(dāng)中部署任意數(shù)量的服務(wù),但這并不代表各項(xiàng)服務(wù)全部可為用戶所訪問(wèn)。而新的Swarm網(wǎng)絡(luò)使得各項(xiàng)服務(wù)之間能夠更為輕松...

    cartoon 評(píng)論0 收藏0
  • 如何利用Docker構(gòu)建基于DevOps全自動(dòng)CI

    摘要:三私有代碼庫(kù)阿里云使用引言使用肯定離不開和代碼的集成。本著代碼可靠性,服務(wù)器穩(wěn)定性,功能擴(kuò)展性綜合對(duì)比,我們選擇使用阿里云的庫(kù)。 來(lái)自用戶的DevOps實(shí)踐分享,分享從開發(fā)代碼到生產(chǎn)環(huán)境部署的一條龍操作的實(shí)踐及經(jīng)驗(yàn), 包含工具技術(shù)的選型及考量、私有代碼庫(kù)與私有鏡像庫(kù)的應(yīng)用等。 (一)容器服務(wù)的Rancher選型 1、為什么說(shuō)是下一代核心技術(shù) 從互聯(lián)網(wǎng)的多次變革說(shuō)起,早期的C/S架構(gòu),到...

    stormzhang 評(píng)論0 收藏0
  • 前端性能優(yōu)化與上線

    摘要:看下狀態(tài)可以看到我已經(jīng)有一些鏡像了我已經(jīng)刪除了拉鏡像正常即可,中間那段是中國(guó)鏡像源,我們成功下來(lái)了的鏡像。攻破像我這樣屌絲的服務(wù)器一般都買的,大的資源文件不住,一個(gè)動(dòng)輒的文件這很蛋疼,不上很難受。 4000字長(zhǎng)文,多圖預(yù)警!?。×髁可魅耄?! 性能優(yōu)化 - 屌絲前端性能優(yōu)化、上線一條龍 大家好我又來(lái)了,本章給大家?guī)?lái)的內(nèi)容是:上線和上線后的性能優(yōu)化 項(xiàng)目地址 實(shí)戰(zhàn)預(yù)覽地址 實(shí)戰(zhàn)項(xiàng)目地址...

    wupengyu 評(píng)論0 收藏0
  • 使用URLOS低門檻快速開發(fā)分發(fā)docker應(yīng)用,未來(lái)微服務(wù)發(fā)展大趨勢(shì)

    摘要:使用技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。例如我們要安裝然后使用查看我們的擴(kuò)展是否安裝成功。啟動(dòng)和,檢查是否正常運(yùn)行。單容器運(yùn)行若勾選,則表示安裝此應(yīng)用時(shí),每個(gè)服務(wù)只運(yùn)行一個(gè)容器。 使用Docker技術(shù)可以幫助企業(yè)快速水平擴(kuò)展服務(wù),從而到達(dá)彈性部署業(yè)務(wù)的能力。在云服務(wù)概念興起之后,Docker的使用場(chǎng)景和范圍進(jìn)一步發(fā)展,如今在微服務(wù)架構(gòu)越來(lái)越流行的情況下,微服務(wù)...

    張巨偉 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<