为简化部署操做,统一线上环境。在近期迁移服务器时将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 以上两个命令二连,重启容器
能够看到运维难度大幅度简化了。