Docker構(gòu)建服務(wù)之部署和備份jekyll網(wǎng)站

來自《第一本Docker書》,我覺得很有趣存筏,就記錄一下

準(zhǔn)備國內(nèi)ubuntu鏡像

每次構(gòu)建Ubuntu容器然后安裝軟件的時候碍岔,都異常的卡痴施,那是因為沒有使用國內(nèi)鏡像擎厢,所以我事先準(zhǔn)備了sources.list文件,一定要確定對應(yīng)的ubuntu的版本號辣吃,我用的是18.04动遭,內(nèi)容如下

vi sources.list

輸入以下內(nèi)容

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

創(chuàng)建對應(yīng)的Dockerfile

jekyll

mkdir jekyll
cd jekyll
vi Dockerfile

輸入如下內(nèi)容

FROM ubuntu:18.04
LABEL maintainer="vector4wang@qq.com"
ENV REFRESHED_AT 2019-01-14
## 更換鏡像
RUN rm -rf /etc/apt/sources.list
ADD sources.list /etc/apt/

RUN apt-get -qq update
RUN apt-get -qq install ruby ruby-dev libffi-dev build-essential nodejs
RUN gem install --no-rdoc --no-ri jekyll -v 2.5.3

VOLUME /data
VOLUME /var/www/html
WORKDIR /data

ENTRYPOINT [ "jekyll", "build", "--destination=/var/www/html" ]

最后一句命令的意思就是每次啟動的時候就將/data下的源文件編譯成可發(fā)布的網(wǎng)站內(nèi)容,并放在/var/www/html中供下面的apache使用

apache

mkdir apache
cd apache
vi Dockerfile

輸入以下內(nèi)容

FROM ubuntu:18.04
LABEL maintainer="vector4wang@qq.com"

## 更換鏡像
RUN rm -rf /etc/apt/sources.list
ADD sources.list /etc/apt/

RUN apt-get -qq update
RUN apt-get -qq install apache2

VOLUME [ "/var/www/html" ]
WORKDIR /var/www/html

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2

RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR

EXPOSE 80

ENTRYPOINT [ "/usr/sbin/apachectl" ]
CMD ["-D", "FOREGROUND"]

最終的目錄結(jié)構(gòu)為:

.
├── apache
│   ├── Dockerfile
│   └── sources.list
├── jekyll
    ├── Dockerfile
    └── sources.list

構(gòu)建

分別構(gòu)建 jekyll 和 apache

cd jekyll
docker build -t vector/jekyll .

cd apache
docker build -t vector/apache .

注意:一定不要忘記更換容器的鏡像源...

執(zhí)行docker images

啟動服務(wù)

jekyll源文件

創(chuàng)建一個目錄

mkdir jekyll-src
cd jekyll-src

從github上下載一個jekyll模板代碼

git clone https://github.com/turnbullpress/james_blog.git
cd james_blog

啟動jekyll

docker run -v /Users/wangxc/Develop/docker/jekyll-src/james_blog:/data/ --name vector_blog vector/jekyll

結(jié)果為

Configuration file: none
            Source: /data
       Destination: /var/www/html
      Generating...
                    done.

“卷是在一個或多個容器中特殊指定的目錄神得,卷會繞過聯(lián)合文件系統(tǒng)厘惦,為持久化數(shù)據(jù)和共享數(shù)據(jù)提供幾個有用的特性。
卷可以在容器間共享和重用哩簿。
共享卷時不一定要運行相應(yīng)的容器宵蕉。
對卷的修改會直接在卷上反映出來。
更新鏡像時不會包含對卷的修改节榜。
卷會一直存在羡玛,直到?jīng)]有容器使用它們。
利用卷全跨,可以在不用提交鏡像修改的情況下缝左,向鏡像里加入數(shù)據(jù)(如源代碼亿遂、數(shù)據(jù)或者其他內(nèi)容)浓若,并且可以在容器間共享這些數(shù)據(jù)。
卷在Docker宿主機的/var/lib/docker/volumes目錄中蛇数∨驳觯可以通過docker inspect命令查看某個卷的具體位置,如docker inspect -f "{{ range .Mounts }}{{.}}{{end}}"耳舅÷瞪希”
摘錄來自: [澳] 詹姆斯·特恩布爾(James Turnbull). “第一本Docker書(修訂版)∑只玻” iBooks.

啟動apache

docker run -d -P --volumes-from vector_blog vector/apache

--volumes-from把指定容器里的所有卷都加入新創(chuàng)建的容器里馏予。這意味著,Apache容器可以訪問之前創(chuàng)建的james_blog容器里/var/www/html卷中存放的編譯后的Jekyll網(wǎng)站盔性。即便james_blog容器沒有運行霞丧,Apache容器也可以訪問這個卷
**摘錄來自: [澳] 詹姆斯·特恩布爾(James Turnbull). “第一本Docker書(修訂版)∶嵯悖” iBooks. **

此時apache這個容器可以訪問jekyll容器里的所有卷,我們進(jìn)入apache內(nèi)容看一下

docker exec -ti bdd9df87c189 /bin/bash

進(jìn)入對應(yīng)的目錄可看到j(luò)ekyll中的卷

/var/www/html
/data

查看宿主機與容器的端口映射情況

docker ps 
或
docker port e539ff7ed7e8 80

得到0.0.0.0:32768蛹尝,然后宿主機訪問localhost:32768

編輯內(nèi)容

進(jìn)入宿主機的jekyll模板源代碼中后豫,對_config.yml進(jìn)行相關(guān)的修改,比如修改title為自己的名字或者其他的內(nèi)容突那,保存后退出挫酿,然后執(zhí)行

docker start vector_blog

通過查看日志docker logs vector_blog可以看到

Configuration file: /data/_config.yml
            Source: /data
       Destination: /var/www/html
      Generating... 
                    done.
 Auto-regeneration: disabled. Use --watch to enable.

已經(jīng)跟新,這個時候愕难,我們刷新下頁面localhost:32768就可以看到最新的內(nèi)容了早龟,是不是很有趣

備份

這里提供兩種思路吧,
第一種:我自己用的是hexo务漩,一般都是直接備份在github上拄衰,jekyll也一樣,保存在github上是很容易很方便的饵骨;

第二種就是書上說的直接對卷進(jìn)行備份

run --rm --volumes-from vector_blog -v $(pwd):/backup ubuntu:18.04 \
tar cvf /backup/vector_blog_backup.tar /var/www/html

指定了--rm標(biāo)志翘悉,這個標(biāo)志對于只用一次的容器,或者說用完即扔的容器居触,很有用妖混。這個標(biāo)志會在容器的進(jìn)程運行完畢后,自動刪除容器轮洋。對于只用一次的容器來說制市,這是一種很方便的清理方法。

個人感覺還是備份到git上方便弊予。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末祥楣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子汉柒,更是在濱河造成了極大的恐慌误褪,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碾褂,死亡現(xiàn)場離奇詭異兽间,居然都是意外死亡,警方通過查閱死者的電腦和手機正塌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門嘀略,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人乓诽,你說我怎么就攤上這事帜羊。” “怎么了鸠天?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵讼育,是天一觀的道長。 經(jīng)常有香客問我,道長窥淆,這世上最難降的妖魔是什么卖宠? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮忧饭,結(jié)果婚禮上扛伍,老公的妹妹穿的比我還像新娘。我一直安慰自己词裤,他們只是感情好刺洒,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吼砂,像睡著了一般逆航。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上渔肩,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天因俐,我揣著相機與錄音,去河邊找鬼周偎。 笑死抹剩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓉坎。 我是一名探鬼主播澳眷,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼哥捕,長吁一口氣:“原來是場噩夢啊……” “哼单刁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起大莫,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤勿侯,失蹤者是張志新(化名)和其女友劉穎拓瞪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體罐监,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡吴藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年瞒爬,在試婚紗的時候發(fā)現(xiàn)自己被綠了弓柱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡侧但,死狀恐怖矢空,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情禀横,我是刑警寧澤屁药,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站柏锄,受9級特大地震影響酿箭,放射性物質(zhì)發(fā)生泄漏复亏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一缭嫡、第九天 我趴在偏房一處隱蔽的房頂上張望缔御。 院中可真熱鬧,春花似錦妇蛀、人聲如沸耕突。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽眷茁。三九已至,卻和暖如春纵诞,著一層夾襖步出監(jiān)牢的瞬間上祈,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工浙芙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雇逞,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓茁裙,卻偏偏與公主長得像塘砸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子晤锥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 要構(gòu)建的是使用Jekyll框架的自定義網(wǎng)站.會構(gòu)建兩個鏡像. 一個鏡像安裝了Jekyll及其他用于構(gòu)建Jekyll...
    hiekay閱讀 671評論 0 0
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一掉蔬、Docker 簡介 Docke...
    極客圈閱讀 10,510評論 0 120
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,548評論 15 147
  • 五矾瘾、Docker 端口映射 無論如何女轿,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的。此外壕翩,除了...
    R_X閱讀 1,758評論 0 7
  • 《致敬,先烈芜抒!》 (一) 警鐘長鳴響徹天珍策, 七七國難銘心間。 睡獅驚醒山河怒宅倒, 壯士譜寫浴血篇攘宙。 (二) 日寇侵略...
    一剪紅梅閱讀 283評論 0 3