当前位置:   article > 正文

【SpringCloud】Docker环境部署_拉去docker镜像部署新环境

拉去docker镜像部署新环境


基础镜像先使用官方的openjdk:11镜像,之后看情况自制对应的镜像。

拉取镜像
docker pull openjdk:11
默认是Debian的大小为654MB,需要自制成Centos7的。

制作CentOs7镜像
拉取CentOs:7.9.2009镜像

docker pull centos:7.9.2009


Dockerfile文件

  1. # 基础镜像
  2. FROM centos:7.9.2009
  3. # 创建java文件所放目录
  4. RUN mkdir /usr/local/java
  5. # 将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
  6. ADD jdk-11.tar.gz /usr/local/java/
  7. # 设置环境变量
  8. ENV JAVA_HOME /usr/local/java/jdk-11
  9. ENV PATH $JAVA_HOME/bin:$PATH

生成镜像

docker build -t openjdk-centos7:11 .

生成镜像大小为604MB

微服务镜像
整体目录结构如下:

  1. ├── .env
  2. ├── docker-compose.yml
  3. ├── Dockerfile
  4. └── service
  5.     ├── aec-service-user-1.0.jar
  6.     ├── config
  7.     │   ├── application-mqtt.yml
  8.     │   ├── application-rabbitmq.yml
  9.     │   ├── application-service.yml
  10.     │   ├── application-user.yml
  11.     │   └── application.yml
  12.     ├── service-name
  13.     ├── start.sh
  14.     └── stop.sh

制作微服务镜像
Dockerfile文件内容如下:

  1. # 基础镜像
  2. FROM openjdk-centos7:11
  3. # 创建工作目录
  4. RUN mkdir -p /home/data/service
  5. # 拷贝文件到指定目录下
  6. COPY service /home/data/service
  7. # 容器工作目录
  8. WORKDIR /home/data/service
  9. # 启动命令
  10. CMD ["sh", "start.sh"]

启动脚本start.sh

  1. ## 其中启动脚本内容如下:
  2. #!/bin/sh
  3. FOLDER_PATH=/home/data/service
  4. cd $FOLDER_PATH
  5. JAR_NAME=`cat service-name`
  6. ## ${PARAMS}为通过docker传入的环境变量
  7. /usr/local/java/jdk-11/bin/java -jar $FOLDER_PATH/$JAR_NAME ${PARAMS}

生成镜像

docker build -t aec-service-user:1.0.0.0 .

测试镜像

  1. # 创建并启动容器
  2. docker run -dit --name aec-service-user-1.0.0.0 aec-service-user:1.0.0.0
  3. # 进入容器查看
  4. docker exec -it aec-service-user-1.0.0.0 /bin/bash
  5. # 通过查看日志可以得知容器启动正常,那么可以将其先删除了
  6. docker stop 容器id/名字
  7. docker rm 容器id/名字

编写微服务Docker-Compose
docker-compose.yml文件内容如下

  1. services:
  2.   aec-service-user:
  3.     logging:
  4.       driver: none
  5.     container_name: aec-service-user-${SERVICE_VERSION}
  6.     image: aec-service-user:${SERVICE_VERSION}
  7.     restart: always
  8.     ports:
  9.       - "$SERVICE_EXPORT_PORT:29999"
  10.     volumes:
  11.     - $SERVICE_EXPORT_FOLDER:/home/data/logs
  12.     - /etc/localtime:/etc/localtime:ro
  13.     environment:
  14.       TZ: Asia/Shanghai
  15.       PARAMS: "
  16.         --server.port=29999
  17.         "
  18. version: '3.1'

环境变量文件.env内容如下:

  1. SERVICE_VERSION=1.0.0.0
  2. SERVICE_EXPORT_PORT=14000
  3. SERVICE_EXPORT_FOLDER=/home/xxx/dockerVolume/aec-service-user

以上文件解析如下:

1、docker-compose服务名为aec-service-user
2、创建容器名为aec-service-user-1.0.0.0
3、关闭docker日志
4、使用的镜像为aec-service-user:1.0.0.0
5、重启策略为:在容器退出时总是重启容器
6、映射端口有:将容器内部的29999映射为主机的14000
7、数据卷映射有:将主机的/home/xxx/dockerVolume/aec-service-user和容器的/home/data/logs做映射;将主机的/etc/localtime和容器的/etc/localtime做只读映射(容器中无法修改该文件)
8、设置容器的环境变量有TZ和PARAMS

启动服务

  1. docker-compose.yml up -d
  2. ## 这个命令需要在docker-compose.yml目录执行
  3. ## -d表示后台运行

启动之后将会有自动创建容器并将其启动。

其他常用docker-compose命令有:

  1. # 在后台启动所有服务
  2. docker-compose up -d
  3. # 列出项目中目前的所有容器
  4. docker-compose ps
  5. # 停止正在运行的容器,可以通过docker-compose start 再次启动
  6. docker-compose stop
  7. # 停止和删除容器、网络、卷、镜像
  8. # --rmi all 删除删除compose文件中定义的所有镜像
  9. docker-compose down
  10. # 查看服务容器的输出
  11. docker-compose logs
  12. # 服务容器一旦构建后,将会带上一个标记名。可以随时在项目目录下运行docker-compose build来重新构建服务
  13. docker-compose build
  14. # 拉取服务依赖的镜像
  15. docker-compose pull
  16. # 重启项目中的服务
  17. docker-compose restart
  18. # 删除所有(停止状态的)服务容器
  19. # –f, –force,强制直接删除,包括非停止状态的容器
  20. docker-compose rm
  21. # 启动已经存在的服务容器
  22. docker-compose start
  23. # 在指定服务上执行一个命令
  24. docker-compose run
  25. # 设置指定服务运行的容器个数。通过service=num的参数来设置数量
  26. docker-compose scale
  27. # 暂停/恢复一个服务容器
  28. docker-compose pause/unpause
  29. # 验证并查看compose文件配置
  30. docker-compose config
  31. # 显示某个容器端口所映射的公共端口
  32. docker-compose port

镜像导入导出

  1. # 导出
  2. docker save aec-service-user:1.0.0.0 > aec-service-user-1.0.0.0.tar.gz 
  3. # 导入
  4. docker load < aec-service-user-1.0.0.0.tar.gz

通过容器导入导出
以下介绍通过容器进行导入导出,目前来说并不会用上就是。

  1. # 导出
  2. docker export -o aec-service-user-container-1.0.0.0.tar.gz aec-service-user-1.0.0.0
  3. # 导入(导入成镜像,然后通过镜像启动容器)
  4. docker import aec-service-user-container-1.0.0.0.tar.gz aec-service-user:1.0.0.0
  5. # 启动容器
  6. ## 此时直接去启动会报错
  7. ## docker: Error response from daemon: No command specified.
  8. ## 需要加上原本镜像的启动命令
  9. docker run -dit --name aec-service-user-1.0.0.0 aec-service-user:1.0.0.0 sh start.sh


 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/502335
推荐阅读
相关标签
  

闽ICP备14008679号