爲簡化部署操做,統一線上環境。在近期遷移服務器時將CityPos項目的服務端使用docker進行了部署。python
使用的docker版本:ce 18.09git
使用docker部署有如下優勢:web
部署的配置使用docker-compose進行編排。主要包括如下鏡像:redis
其中opencv-python-flask的 鏡像腳本以下:spring
FROM jjanzic/docker-python3-opencv:contrib-opencv-3.4.1
MAINTAINER Nature szd <zzbkszd@163.com>
RUN pip install flask
複製代碼
能夠看到很是簡單,在別人的基礎上安裝了一個flask框架便可。docker
各個服務均在citypos網絡下,互相之間直接使用container_name:port便可直接訪問。理論上講能夠達到不用管理線上/測試等服務環境問題的目標。數據庫
docker-compose.yml文件以下:flask
# 基礎docker環境搭建
version: '3'
services:
# redis 數據庫服務
redis:
container_name: citypos-redis
image: redis
restart: always
volumes:
- ./redis.conf:/usr/local/etc/redis/redis.conf
command:
redis-server --requirepass ******
networks:
- citypos
# tomcat web服務
tomcat:
container_name: citypos-tomcat
image: tomcat:8.5.38-jre8
restart: always
networks:
- citypos
volumes:
- ./webapps:/usr/local/tomcat/webapps
- ./tomcatlog:/usr/local/tomcat/logs
ports:
- 8080:8080
links:
- redis:citypos-redis
# 圖片對比服務
imagesearch:
container_name: image-search
image: opencv-python-flask:latest
restart: always
volumes:
- /root/compose/imagesearch:/mnt/
networks:
- citypos
command:
python /mnt/imgsearch.py
networks:
citypos:
複製代碼
服務器上有拉取maven鏡像,由於本地上傳較慢,故直接在服務器從git拉取代碼並經過docker使用maven編譯、複製到webapps目錄下進行部署。api
使用docker編譯指令以下:緩存
docker run -it --rm --name my-maven-project -v "/root/src/citypos-api":/usr/src/mymaven -v "/root/src/m2":/root/.m2 -w /usr/src/mymaven maven:3.3-jdk-8 mvn clean compile package spring-boot:repackage
以上步驟可使用自動化腳本實現。
服務管理的命令就是使用docker-compose命令。
docker-compose up 啓動新的容器
docker-compose down 關閉並刪除容器
docker-compose start 啓動容器,必須已經新建過
docker-compose stop 關閉容器並不刪除。
docker-compose restart 以上兩個命令二連,重啓容器
能夠看到運維難度大幅度簡化了。