黄骅市网站建设价格,seo新手教程,国家再就业免费培训网,google搜索引擎免费入口目录
一、前提说明
二、简单的Docker容器部署案例
1. Dockerfile 配置
2. docker-compose.yml 配置
3. application-prod.properties 配置
4. pom.xml 配置
5. 上传文件
6. 创建基础Docker镜像
7. docker-compose.yml编排
8. 停止并删除容器编排
三、案例地址 一、前…目录
一、前提说明
二、简单的Docker容器部署案例
1. Dockerfile 配置
2. docker-compose.yml 配置
3. application-prod.properties 配置
4. pom.xml 配置
5. 上传文件
6. 创建基础Docker镜像
7. docker-compose.yml编排
8. 停止并删除容器编排
三、案例地址 一、前提说明
在配置好Docker和Docker Compose之后部署一个JavaWeb项目。
使用到 spingbootmysqlredis
二、简单的Docker容器部署案例
1. Dockerfile 配置
# 基于那个镜像使用 java
# FROM openjdk:8-oracle
FROM java:8# 作者
MAINTAINER cj# 在主机 /var/lib/docker 目录下创建一个临时文件并链接到容器的 /tmp
VOLUME /tmp# 将jar包添加到容器中并命名为 deploy-docker.jar
ADD deploy-docker-1.0-SNAPSHOT.jar /deploy-docker.jar# 运行jar包
RUN bash -c touch /deploy-docker.jar
# 使用 ENTRYPOINT 设置容器启动时执行的命令并指定 Spring profile 为 prod
ENTRYPOINT [java, -jar, /deploy-docker.jar, --spring.profiles.activeprod]# SpringBoot 项目配置的端口号为 1931需要将 1931 暴露出去
EXPOSE 19312. docker-compose.yml 配置
# docker-compose文件版本号
version: 3# 定义自定义网络 springboot_network_1
networks:springboot_network_1:# 配置各个容器服务
services:# 定义名为 microService 的服务microService:# 使用 deploy-docker:1.1 镜像作为容器image: deploy-docker:1.1# 设置容器的名称为 ms01container_name: ms01 # 容器名称如果不指定会生成一个服务名加上前缀的容器名# 将容器内部端口 1931 映射到宿主机端口 1931ports:- 1931:1931# 挂载宿主机的 /app/microService 目录到容器内的 /data 目录volumes:- /app/microService:/data# 连接到名为 springboot_network_1 的自定义网络networks:- springboot_network_1# 定义 microService 服务依赖的其他服务depends_on:- redis- mysql# 定义名为 redis 的服务redis:# 使用 redis:6.0.8 镜像作为容器image: redis:6.0.8# 主机端口:容器内部端口ports:- 6379:6379# 挂载宿主机的 redis 配置文件和数据目录到容器内volumes:- /app/redis/redis.conf:/etc/redis/redis.conf- /app/redis/data:/data# 连接到名为 springboot_network_1 的自定义网络networks:- springboot_network_1# 指定容器启动命令为 redis-server /etc/redis/redis.confcommand: redis-server /etc/redis/redis.conf# 定义名为 mysql 的服务mysql:# 使用 mysql:8.3 镜像作为容器image: mysql:8.3# 设置 MySQL 的环境变量environment:MYSQL_ROOT_PASSWORD: 123456MYSQL_ALLOW_EMPTY_PASSWORD: noMYSQL_DATABASE: deploy-dockerMYSQL_USER: cjMYSQL_PASSWORD: 123456# 主机端口(3306):容器内部端口(3306)ports:- 3306:3306# 挂载宿主机的 MySQL 数据库文件、配置文件和初始化脚本到容器内volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker-entrypoint-initdb.d# 连接到名为 springboot_network_1 的自定义网络networks:- springboot_network_1# 指定容器启动命令为 --default-authentication-pluginmysql_native_passwordcommand: --default-authentication-pluginmysql_native_password # 解决外部无法访问3. application-prod.properties 配置
# 服务器端口号
server.port1931
server.servlet.context-path/
# Alibaba Druid 数据源配置
# 配置使用 Alibaba Druid 数据源
spring.datasource.typecom.alibaba.druid.pool.DruidDataSource
# 数据库驱动类名
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver
# 数据库连接 URL
#spring.datasource.urljdbc:mysql://192.168.153.133:3306/deploy_docker?serverTimezoneGMT%2B8useSSLfalsecharacterEncodingutf-8allowPublicKeyRetrievaltrue
# 使用容器内部服务名进行连接
spring.datasource.urljdbc:mysql://mysql:3306/deploy_docker?serverTimezoneGMT%2B8useSSLfalsecharacterEncodingutf-8allowPublicKeyRetrievaltrue
# 数据库用户名
spring.datasource.usernameroot
# 数据库密码
spring.datasource.password123456
# 配置 Druid 连接池禁用空闲时检测
spring.datasource.druid.test-while-idlefalse
# Redis 缓存配置
# Redis 数据库索引
spring.redis.database0
# 使用 IP 地址进行连接
#spring.redis.host192.168.153.133
# 使用容器内部服务名进行连接
spring.redis.hostredis
# Redis 端口号
spring.redis.port6379
# Redis 密码
spring.redis.password123456
# 配置 Lettuce 连接池参数
spring.redis.lettuce.pool.max-active8
spring.redis.lettuce.pool.max-wait-1ms
spring.redis.lettuce.pool.max-idle8
spring.redis.lettuce.pool.min-idle0
# MyBatis 配置
# MyBatis Mapper 文件路径
mybatis.mapper-locationsclasspath:mapper/*.xml
# MyBatis 实体类包路径
mybatis.type-aliases-packageorg.example.entities
# Swagger 配置
# 启用 Swagger2 API 文档
spring.swagger2.enabledtrue4. pom.xml 配置
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.6/versionrelativePath/ !-- 从仓库中查找父项目 --/parentgroupIdorg.study/groupIdartifactIddeploy-docker/artifactIdpackagingjar/packagingversion1.0-SNAPSHOT/version!-- 定义项目使用的属性如编码、编译版本等 --propertiesproject.build.sourceEncodingUTF-8/project.build.sourceEncodingmaven.compiler.source1.8/maven.compiler.sourcemaven.compiler.target1.8/maven.compiler.target!-- 定义各个依赖版本 --junit.version4.12/junit.versionlog4j.version1.2.17/log4j.versionlombok.version1.16.18/lombok.versionmysql.version8.0.30/mysql.versiondruid.version1.1.17/druid.versionmapper.version4.1.5/mapper.versionmybatis.spring.boot.version1.3.0/mybatis.spring.boot.versionswagger.version2.9.2/swagger.version/properties!--配置不同的profile对应不同的生产环境--profilesprofile!--开发--iddev/idactivation!--默认开发环境--activeByDefaulttrue/activeByDefault/activationpropertiesactivatedPropertiesdev/activatedProperties/properties/profileprofileidprod/idpropertiesactivatedPropertiesprod/activatedProperties/properties/profileprofileidtest/idpropertiesactivatedPropertiestest/activatedProperties/properties/profile/profiles!-- 项目依赖配置 --dependencies!-- GuavaGoogle开源的Guava中自带的布隆过滤器 --dependencygroupIdcom.google.guava/groupIdartifactIdguava/artifactIdversion23.0/version/dependency!-- RedissonRedis Java客户端库 --dependencygroupIdorg.redisson/groupIdartifactIdredisson/artifactIdversion3.13.4/version/dependency!-- Spring Boot Starter WebSpring Boot的Web起步依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- Spring Boot Starter ActuatorSpring Boot的监控与管理依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-actuator/artifactId/dependency!-- Swagger2API文档生成工具 --dependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger2/artifactIdversion${swagger.version}/version/dependencydependencygroupIdio.springfox/groupIdartifactIdspringfox-swagger-ui/artifactIdversion${swagger.version}/version/dependency!-- Spring Boot Starter Data RedisSpring Boot集成Redis依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- Spring Boot Starter CacheSpring Boot缓存起步依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId/dependency!-- Apache Commons Pool2通用对象池 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency!-- JedisRedis的Java客户端库 --dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion3.1.0/version/dependency!-- MySQL Connector JavaMySQL数据库驱动 --dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion${mysql.version}/version/dependency!-- Druid Spring Boot StarterSpring Boot集成Druid连接池 --dependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion${druid.version}/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion${druid.version}/version/dependency!-- MyBatis Spring Boot StarterSpring Boot集成MyBatis依赖 --dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis.spring.boot.version}/version/dependency!-- Apache Commons Codec通用编解码库 --dependencygroupIdcommons-codec/groupIdartifactIdcommons-codec/artifactIdversion1.10/version/dependency!-- HutoolJava工具类库 --dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.2.3/version/dependency!-- JUnitJava单元测试框架 --dependencygroupIdjunit/groupIdartifactIdjunit/artifactIdversion${junit.version}/version/dependency!-- Spring Boot DevToolsSpring Boot开发工具用于热部署等 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependency!-- Spring Boot Starter TestSpring Boot测试起步依赖 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- Log4jJava日志框架 --dependencygroupIdlog4j/groupIdartifactIdlog4j/artifactIdversion${log4j.version}/version/dependency!-- LombokJava简化代码库 --dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion${lombok.version}/versionoptionaltrue/optional/dependency!-- Javax Persistence APIJava持久化API --dependencygroupIdjavax.persistence/groupIdartifactIdpersistence-api/artifactIdversion1.0.2/version/dependency!-- 通用MapperMyBatis通用Mapper --dependencygroupIdtk.mybatis/groupIdartifactIdmapper/artifactIdversion${mapper.version}/version/dependency/dependencies!-- 项目构建配置 --build!-- 配置资源处理 --resources!-- 第一个资源配置 --resource!-- 指定资源目录 --directorysrc/main/resources/directory!-- 是否进行资源过滤 --filteringtrue/filtering/resource!-- 第二个资源配置 --resource!-- 指定资源目录 --directorysrc/main/resources/directory!-- 是否进行资源过滤 --filteringfalse/filtering!-- 包含的文件列表 --includes!-- 包含所有的 .xml 文件 --include**/*.xml/includeincludeapplication.properties/include!-- 包含根据 activatedProperties 动态生成的 application-${activatedProperties}.properties 文件 --includeapplication-${activatedProperties}.properties/include!-- 包含所有的 .properties 文件 --include**/*.properties/includeincludelogback.xml/include/includes/resource/resources!-- 配置 Maven 插件 --plugins!-- Spring Boot Maven Plugin用于打包Spring Boot应用 --plugin!-- 插件组ID --groupIdorg.springframework.boot/groupId!-- 插件ID --artifactIdspring-boot-maven-plugin/artifactId/plugin!-- Maven Resources PluginMaven资源处理插件 --plugin!-- 插件组ID --groupIdorg.apache.maven.plugins/groupId!-- 插件ID --artifactIdmaven-resources-plugin/artifactId!-- 插件版本 --version3.1.0/version/plugin/plugins/build/project
5. 上传文件
上传文件到CentOS中创建一个mydocker的文件夹将打包的jar、Dockerfile、docker-compose.yml放在同一级目录中。如同 ps以下命令需要在包含jar包、Dockerfile、docker-compose.yml目录下进行不然可能会出现找不到文件的错误
6. 创建基础Docker镜像
docker build -t deploy-docker:1.1 .
7. docker-compose.yml编排
编写完成docker-compose.yml后进行语法检查
# 进行语法检查
docker-compose config -q
如果语法检查没有任何问题进行创建、启动
docker-compose up -d
8. 停止并删除容器编排
docker-compose down
三、案例地址
放在gitee上有需要的可以获取如果有帮助记得★starhttps://gitee.com/CJ_HGX/deploy-dockerhttps://gitee.com/CJ_HGX/deploy-docker