學習Docker之使用docker-compose編配一整套服務
使用docker compose可以一鍵完成“一整套”服務的搭建也可以完成服務叢集化部署。
這兩天在用python寫一個爬蟲,資料暫時儲存在本地的mongodb資料庫,到部署的時候,發現線上的伺服器沒有python環境和mongodb,這個時候立馬就想到了Docker!
最初的思路就是run一個mongodb容器,然後再把爬蟲程式構建為映象並run起來。準備動手的時候突然腦海裡閃過compose這個東東,之前看docker書的時候正好看到有關compose的這一章,我花了十分鐘簡單的過了一下,發現使用compose可以更加完美的實現一鍵構建、部署與啟動的過程,接下來就以python與mongodb組合為例
官網使用的是python與redis https://docs.docker.com/compose/gettingstarted/
先看一下python程式
from flask import Flask
from pymongo import MongoClient
import random
app = Flask(__name__)
client = MongoClient('mongodb')
db=client['datas']
@app.route('/')
def hello():
db.col.insert({"hits":random.random()})
return 'Hello World! I have been seen %s times.' % (db.col.count())
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
使用flask做python的web服務框架,每請求一次就會在mongodb的datas資料庫插入一個文件,然後返回datas下面的總數,非常簡單。
然後需要把python所依賴的模組抽取出來,這裡推薦使用pipreqs
安裝pipreqs
pip install pipreqs
然後執行指令碼
# 我直接在專案的根目錄下執行,當然也可以帶上路徑 如 pipreqs /project/path
pipreqs .
生成的requirements如下
pymongo==3.6.1
Flask==0.12.2
接下來需要編寫Dockerfile
FROM python:2.7
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python","app.py"]
這裡用的是python 2.7版本
然後定位到code目錄下;
將requirements.txt下依賴的模組一併安裝;
最後執行app.py
如果是第一次接觸Docker那就以往文章瞭解下~
學習Docker之Dockerfile的命令
學習Docker之10張圖帶你深入理解Docker容器和映象
學習Docker之Docker、容器和映象的簡介和常用命令
學習Docker之Docker初體驗—SpringBoot整合Docker的部署、釋出與應用
緊接著開始docker-compose yml 命令與寫法跟Dockerfile類似,很容易理解,如下:
version: '2'
services:
web:
build: .
ports:
- "5000:5000"
mongodb:
image: mongo
ports:
- "27017:27017"
這裡要注意一下mongodb,就是python中使用的‘域名’
可以這樣理解,web服務和mongodb服務都在同一個區域網,然後mongodb服務的ip對應域名就是“mongodb”
docker-compose 一般需要獨自安裝,我這裡使用的是ubuntu,直接使用apt install docker-compose
,當然也可以按照官網安裝
最終目錄為
.
├── app.py
├── docker-compose.yml
├── Dockerfile
└── requirements.txt
執行命令docker-compose up
到這裡使用docker-compose編配一個web服務和一個資料服務就到此結束了!
使用compose我們可以把一整套的專案包括應用、資料儲存、訊息中介軟體等等的安裝、部署與啟動整合在一個yml配置中,真的可以達到一鍵啟動應用!!!
CSDN:http://blog.csdn.net/qqhjqs?viewmode=list
部落格:http://vector4wang.tk/
簡書:https://www.jianshu.com/u/223a1314e818
Github:https://github.com/vector4wang
Gitee:https://gitee.com/backwxc
如果感覺有幫助的話,點個贊哦~
相關文章
- Docker-Compose學習Docker
- docker-compose 編排Docker
- docker-compose搭建gitlab服務DockerGitlab
- docker-compose 使用例項Docker
- 使用 makefile 管理 docker-composeDocker
- Docker學習之搭建MySql容器服務DockerMySql
- Docker 學習筆記(第八集:使用 docker-compose 搭建 php 開發環境 )Docker筆記PHP開發環境
- docker-compose 編排指南 (v3.7)Docker
- Docker學習之搭建ActiveMQ訊息服務DockerMQ
- 7、docker-compose安裝使用Docker
- 使用docker-compose管理freeswitch容器Docker
- 關於docker-Compose基本使用Docker
- go-zero docker-compose 搭建課件服務(三):編寫courseware api服務GoDockerAPI
- go-zero docker-compose 搭建課件服務(二):編寫courseware rpc服務GoDockerRPC
- 容器技術|Docker三劍客之docker-composeDocker
- go-zero docker-compose 搭建課件服務(一):編寫服務api和protoGoDockerAPI
- Docker學習(十)Docker容器編排 Docker-composDocker
- docker(二十三):docker通過docker-compose部署redmine服務Docker
- Dockerfile指令與Docker-compose容器編排-搭建docker私有倉庫Docker
- docker學習4:Docker 映象使用Docker
- 使用 docker-compose 搭建 Laravel 環境 (三)DockerLaravel
- 使用docker-compose構建elasticsearch叢集DockerElasticsearch
- 自用 docker-composeDocker
- docker-compose教程Docker
- docker學習3:Docker容器使用Docker
- 使用docker-compose執行微服務專案#eureka+config+auth+gateway+moduleDocker微服務Gateway
- Dockerfile與docker-compose容器編排(Docker系列第3章,共3章)Docker
- Deepin20普通使用者安裝docker、docker-composeDocker
- Linux 下的 Docker 安裝與使用 Docker-compose 安裝LinuxDocker
- Docker極簡入門:使用Docker-Compose 搭建redis叢集DockerRedis
- docker-compose vs docker-stackDocker
- 學習瞭解使用dockerDocker
- [Docker 系列]docker 學習七,DockerFile 編寫和實戰Docker
- 【Docker 系列】docker 學習七,DockerFile 編寫和實戰Docker
- 使用 docker-compose 部署 golang 的 Athens 私有代理DockerGolang
- docker-compose部署ELKDocker
- docker-compose 安裝Docker
- Docker-compose實戰Docker