開始之前
推薦大家可以去看下 docker從入門到實踐這本書,在這個系列中只會從項目出發(fā)一步步到落地湘换,一些基本知識點降允,會一筆帶過
上篇我們主要完成了docker+node的初探梳星,那么這篇我們將結(jié)合mongodb來部署我們的項目,這篇主要內(nèi)容:
- yaml語法
- docker-compose.yml
- 容器互聯(lián) link
- mongo 配置
那么接下我們一個一個來
yaml 語法
yaml語法多用來寫配置文件,它其實有點類似sass的語法表現(xiàn)形式.都是通過代碼縮進來表示層級關(guān)系绰寞,不同是yaml在數(shù)組等等有自己獨特的寫法撮竿,這篇主要不是講解yaml,另外阮一峰大神已經(jīng)寫了一篇yaml很好的入門篇骆姐,所以這里推薦大家看下大神的博客http://www.ruanyifeng.com/blog/2016/07/yaml.html
容器互聯(lián)
docker容器是一個封閉的空間,我們真實的應(yīng)用不可能和上篇一樣是只用到一個單獨的鏡像镜粤,對于我公司的單體架構(gòu)的來說nginx+mysql/mongodb/redis+/asp.net core+node
組成的,那么容器間的通信就顯得格外重要
docker network ls
查詢所有的網(wǎng)絡(luò)
可以看出我們默認(rèn)是有三個網(wǎng)絡(luò)的,這里我們可以新建一個網(wǎng)絡(luò)橋接
docker network create mybridge
使用-- network命令來鏈接我們的容器
docker run -d --name koa-demo --network mybridge qzlb/koa-demo
我們兩個容器之間就在一個網(wǎng)絡(luò)中了,當(dāng)然我們這篇文章會用docker-compose的方式來編寫
docker-compose
相信大家從第一篇已經(jīng)明白docker的簡單內(nèi)容和打包鏡像捏题,那么對比下我們的真實項目,其實是有很多問題的肉渴,首先我們是很多的容器的公荧,比喻說nginx,mysql,redis,rabbitmq等等,不可能一個個Dockerfile來構(gòu)建同规,這個時候就需要一個文件可以一下把我們所有的容器都給啟動,docker-compose就是幫我們做這個事情的,docker-compose通過yaml語法進行編寫的
我們先來看一個簡單的栗子哈
ersion: '3'
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
version代表的是版本號,
services 我們應(yīng)用服務(wù)
web這個可以名稱可以自己定義循狰,可以理解為一個容器節(jié)點,
image 我們這個容器的鏡像
ports 暴露的端口
build:Dockerfile文件的位置,.代表當(dāng)前目錄
depends_on 解決容器的依賴券勺、啟動先后的問題绪钥。以下例子中會先啟動 redis db 再啟動 web
這里就介紹這么多,感興趣的小伙伴請自行查閱docker-compose組成
測試下基礎(chǔ)代碼
在dokcer-compose之前,先測試下我們的代碼,這部分的代碼在我的github上
github:https://github.com/leibocode/node-docker-
Dockfile
# 和我們上篇沒什么區(qū)別哈
FROM node:10.5.0
LABEL author="Lb 13508676924@163.com"
ENV PORT=3001
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE ${PORT}
CMD npm run dev
docker-compose
version: '2'
services:
node:
build: .
ports:
- "3001:3001"
networks:
- nodeapp-network
depends_on:
- mongodb
mongodb:
image: mongo
networks:
- nodeapp-network
networks:
nodeapp-network:
driver: bridge
通過docker-compose up -d 啟動我們的應(yīng)用
通過谷歌進行訪問127.0.0.1:3001
到此了关炼,我們這篇也算是結(jié)束啦程腹,希望可以幫助到正在路上的小伙伴們,還有大概兩三章的內(nèi)容儒拂,關(guān)于docker和node應(yīng)用的內(nèi)容就結(jié)束啦