原創(chuàng)文章,歡迎轉(zhuǎn)載。轉(zhuǎn)載請注明:轉(zhuǎn)載自IT人故事會(huì)际邻,謝謝盈电!
原文鏈接地址:『中級(jí)篇』多容器復(fù)雜應(yīng)用的部署(30)
通過前幾次學(xué)習(xí),對于docker的網(wǎng)絡(luò)特別是單機(jī)燎斩,今天這次主要一起來看比較復(fù)雜的虱歪,會(huì)用到前面學(xué)到的docker的網(wǎng)絡(luò)知識(shí)。今天創(chuàng)建一個(gè)application栅表。這篇的源碼在:https://github.com/limingios/docker.git 中的docke/No.2/labs/flask-redis/
源碼分析
- application的app.py
程序解釋:啟動(dòng)一個(gè)應(yīng)用程序web端笋鄙,訪問一個(gè)redis,用戶每次訪問redis對應(yīng)的key就會(huì)增加1怪瓶,app的主機(jī)萧落,端口是5000
from flask import Flask
from redis import Redis
import os
import socket
app = Flask(__name__)
redis = Redis(host=os.environ.get('REDIS_HOST', '127.0.0.1'), port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello Container World! I have been seen %s times and my hostname is %s.\n' % (redis.get('hits'),socket.gethostname())
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)
- docker的Dockerfile
引用pyhon2.7的image,主機(jī)目錄的app洗贰,拷貝到app目錄下铐尚,運(yùn)行pip按照python的插件,暴露5000端口哆姻,運(yùn)行 python app.py
FROM python:2.7
LABEL maintaner="1??úo?£o±à3ì?óì??à 394498036@qq.com"
COPY . /app
WORKDIR /app
RUN pip install flask redis
EXPOSE 5000
CMD [ "python", "app.py" ]
- 開始構(gòu)建
ls
cd labs
cd flask-redis
ls
sudo service docker restart
sudo docker run -d --name redis redis
sudo docker ps
有老鐵會(huì)問宣增,為啥不用上幾節(jié)說的-p啊 -p 6379:6379 我這是為了內(nèi)部訪問啊,不需要暴露出來矛缨。.
#懟上加速器
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://b81aace9.m.daocloud.io
sudo service docker restart
#創(chuàng)建對應(yīng)的鏡像image
sudo docker build -t liming/flask-redis .
- 創(chuàng)建容器
sudo docker container start redis
#通過-e 命令爹脾,把環(huán)境變量REDIS_HOST=redis 放入容器的環(huán)境變量中
sudo docker run -d --link redis --name flask-redis2 -e REDIS_HOST=redis liming/flask-redis
sudo docker exec -it flask-redis2 /bin/sh
env
#效果就出來了
curl 127.0.0.1:5000
- 我們把容器刪除,然后把容器的端口映射到端口宿主機(jī)上
sudo docker stop flask-redis2
sudo docker rm flask-redis2
sudo docker run -d -p 5000:5000 --link redis --name flask-redis2 -e REDIS_HOST=redis liming/flask-redis
圖例解釋今天的部署
PS:有2個(gè)容器箕昭,他們有訪問的關(guān)系灵妨。通過這個(gè)例子大家可以想到現(xiàn)實(shí)的例子很多項(xiàng)目有前后臺(tái)之分的,有數(shù)據(jù)庫落竹,有前端泌霍,有后端,對于分模塊的項(xiàng)目中述召,我們推薦使用容器的方式朱转,可以給每個(gè)模塊放入不同的容器蟹地。還講了-e的方式給容器內(nèi)設(shè)置環(huán)境變量的方式,方便應(yīng)用的訪問藤为。
往期精彩
- docker導(dǎo)學(xué)(一)
- 容器的技術(shù)概述(二)
- docker的魅力初體驗(yàn)-5分鐘安裝wordpress不走彎路(三)
- docker官網(wǎng)介紹(四)
- 如何在mac上安裝docker(五)
- 如何在window上安裝docker(六)
- 如何在mac上通過vagrant安裝虛擬機(jī)(七)
- 如何在window上通過vagrant安裝虛擬機(jī)(八)
- docker-Machine的本地使用(九)
- docker-Machine的本地使用(十)
- 在linux/mac下通過Docker-Machine在阿里云上的使用(11)
- docker架構(gòu)和底層技術(shù)(12)
- docker Image概述(13)
- 手動(dòng)建立一個(gè)base Image(14)
- 什么是Container(15)
- 構(gòu)建自己的Docker鏡像(16)
- Dockerfile詳解(17)
- 鏡像的發(fā)布(18)
- Dockerfile實(shí)戰(zhàn)(19)
- 容器的操作(20)
- Dockerfile實(shí)戰(zhàn)CMD和ENTRTYPOINT的配合(21)
- 容器的資源限制(22)
- docker網(wǎng)絡(luò)(23)
- docker學(xué)習(xí)必會(huì)網(wǎng)絡(luò)基礎(chǔ)(24)
- Linux網(wǎng)絡(luò)命名空間(25)
- Docker Bridge詳解(26)
- 容器之間的Link(27)
- 容器的端口映射(28)
- 容器網(wǎng)絡(luò)之host和none(29)