Docker Compose实例

目录

一、前提说明

二、简单的Docker容器部署案例

1. Dockerfile 配置

2. docker-compose.yml 配置

3. application.properties 配置

4. pom.xml 配置

5. 上传文件

6. 创建基础Docker镜像

7. docker-compose.yml编排

8. 停止并删除容器编排


一、前提说明

在配置好Docker和Docker Compose之后,部署一个JavaWeb项目。

使用到 spingboot+mysql+redis 

二、简单的Docker容器部署案例

1. Dockerfile 配置

# 基于那个镜像使用 java
# FROM openjdk:8-oracle
FROM java:8# 作者
MAINTAINER cj# 在主机 /var/lib/docker 目录下创建一个临时文件,并链接到容器的 /tmp
VOLUME /tmp# 将jar包添加到容器中,并命名为 springboot_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar /springboot_docker.jar# 运行jar包
RUN bash -c 'touch /springboot_docker.jar'
ENTRYPOINT ["java", "-jar", "/springboot_docker.jar"]# SpringBoot项目配置的端口号为 19311,需要将 19311 暴露出去
EXPOSE 19311

2. docker-compose.yml 配置

# docker-compose文件版本号
version: "3"# 配置各个容器服务
services:# 定义名为 microService 的服务microService:# 使用 springboot_docker:1.1 镜像作为容器image: springboot_docker:1.1# 设置容器的名称为 ms01container_name: ms01  # 容器名称,如果不指定,会生成一个服务名加上前缀的容器名# 将容器内部端口 19311 映射到宿主机端口 19311ports:- "19311:19311"# 挂载宿主机的 /app/microService 目录到容器内的 /data 目录volumes:- /app/microService:/data# 连接到名为 springboot_network 的自定义网络networks:- springboot_network# 定义 microService 服务依赖的其他服务depends_on:- redis- mysql# 定义名为 redis 的服务redis:# 使用 redis:6.0.8 镜像作为容器image: redis:6.0.8# 主机端口:容器内部端口ports:- "6479:6379"# 挂载宿主机的 redis 配置文件和数据目录到容器内volumes:- /app/redis/redis.conf:/etc/redis/redis.conf- /app/redis/data:/data# 连接到名为 springboot_network 的自定义网络networks:- springboot_network# 指定容器启动命令为 redis-server /etc/redis/redis.confcommand: redis-server /etc/redis/redis.conf# 定义名为 mysql 的服务mysql:# 使用 mysql:latest 镜像作为容器image: mysql:latest# 设置 MySQL 的环境变量environment:MYSQL_ROOT_PASSWORD: '123456'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'boot_docker'MYSQL_USER: 'cj'MYSQL_PASSWORD: '123456'# 将容器内部端口 3306 映射到宿主机端口 3406# 主机端口:容器内部端口ports:- "3406: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 的自定义网络networks:- springboot_network# 指定容器启动命令为 --default-authentication-plugin=mysql_native_passwordcommand: --default-authentication-plugin=mysql_native_password # 解决外部无法访问# 定义自定义网络 springboot_network
networks:springboot_network:

3. application.properties 配置

# 设置服务器端口号为 19311
server.port=19311
# ======================== Alibaba Druid 数据库连接池配置 ======================
# 设置数据源类型为 Alibaba Druid 数据库连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
# 设置数据库驱动类名
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# 设置数据库连接地址、字符集等相关信息
#spring.datasource.url=jdbc:mysql://192.168.153.133:3307/boot_docker?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
# 将IP更换成容器名
spring.datasource.url=jdbc:mysql://mysql:3306/boot_docker?serverTimezone=GMT%2B8&useSSL=false&characterEncoding=utf-8&allowPublicKeyRetrieval=true
# 设置数据库用户名
spring.datasource.username=root
# 设置数据库密码
spring.datasource.password=123456
# 设置 Druid 连接池的 test-while-idle 属性为 false,表示在空闲时不测试连接是否有效
spring.datasource.druid.test-while-idle=false
# ======================== Redis 缓存配置 ======================
# 设置 Redis 数据库编号
spring.redis.database=0
# 设置 Redis 主机地址
#spring.redis.host=192.168.153.133
# 将IP更换成容器名
spring.redis.host=redis
# 设置 Redis 端口号
spring.redis.port=6379
# 设置 Redis 密码
spring.redis.password=123456
# 设置 Redis 连接池的一些属性
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-wait=-1ms
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
# ======================== MyBatis 配置 ====================
# 设置 MyBatis 的映射文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
# 设置 MyBatis 实体类别名所在的包路径
mybatis.type-aliases-package=com.wang.docker.entities
# ======================== Swagger 配置 ======================
# 启用 Swagger2 API 文档生成
spring.swagger2.enabled=true

4. pom.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<!-- Maven项目的POM文件,用于管理项目的依赖和构建配置 -->
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!-- 父项目配置 --><parent><!-- 使用Spring Boot Starter Parent作为父项目,统一管理依赖版本 --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.6</version><relativePath/> <!-- 从仓库中查找父项目 --></parent><!-- 项目的基本信息 --><groupId>com.atguigu.docker</groupId><artifactId>docker_boot</artifactId><version>0.0.1-SNAPSHOT</version><!-- 定义项目使用的属性,如编码、编译版本等 --><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!-- 定义各个依赖版本 --><junit.version>4.12</junit.version><log4j.version>1.2.17</log4j.version><lombok.version>1.16.18</lombok.version><mysql.version>8.0.30</mysql.version><druid.version>1.1.17</druid.version><mapper.version>4.1.5</mapper.version><mybatis.spring.boot.version>1.3.0</mybatis.spring.boot.version><swagger.version>2.9.2</swagger.version></properties><!-- 项目依赖配置 --><dependencies><!-- Guava:Google开源的Guava中自带的布隆过滤器 --><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>23.0</version></dependency><!-- Redisson:Redis Java客户端库 --><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.13.4</version></dependency><!-- Spring Boot Starter Web:Spring Boot的Web起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Boot Starter Actuator:Spring Boot的监控与管理依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- Swagger2:API文档生成工具 --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${swagger.version}</version></dependency><!-- Spring Boot Starter Data Redis:Spring Boot集成Redis依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- Spring Boot Starter Cache:Spring Boot缓存起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><!-- Apache Commons Pool2:通用对象池 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId></dependency><!-- Jedis:Redis的Java客户端库 --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.1.0</version></dependency><!-- MySQL Connector Java:MySQL数据库驱动 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><!-- Druid Spring Boot Starter:Spring Boot集成Druid连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid.version}</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>${druid.version}</version></dependency><!-- MyBatis Spring Boot Starter:Spring Boot集成MyBatis依赖 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis.spring.boot.version}</version></dependency><!-- Apache Commons Codec:通用编解码库 --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version></dependency><!-- Hutool:Java工具类库 --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.2.3</version></dependency><!-- JUnit:Java单元测试框架 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><!-- Spring Boot DevTools:Spring Boot开发工具,用于热部署等 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><!-- Spring Boot Starter Test:Spring Boot测试起步依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- Log4j:Java日志框架 --><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><!-- Lombok:Java简化代码库 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version><optional>true</optional></dependency><!-- Javax Persistence API:Java持久化API --><dependency><groupId>javax.persistence</groupId><artifactId>persistence-api</artifactId><version>1.0.2</version></dependency><!-- 通用Mapper:MyBatis通用Mapper --><dependency><groupId>tk.mybatis</groupId><artifactId>mapper</artifactId><version>${mapper.version}</version></dependency></dependencies><!-- 项目构建配置 --><build><plugins><!-- Spring Boot Maven Plugin:用于打包Spring Boot应用 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><!-- Maven Resources Plugin:Maven资源处理插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.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 springboot_docker:1.1 .

7. docker-compose.yml编排

编写完成docker-compose.yml后,进行语法检查

# 进行语法检查
docker-compose config -q

如果语法检查没有任何问题,进行创建、启动

docker-compose up -d

8. 停止并删除容器编排

docker-compose down

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457629.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Swin-UMamba:结合基于ImageNet的预训练和基于Mamba的UNet模型

摘要 https://arxiv.org/pdf/2402.03302v1.pdf 准确的医学图像分割需要整合从局部特征到全局依赖的多尺度信息。然而&#xff0c;现有方法在建模长距离全局信息方面面临挑战&#xff0c;其中卷积神经网络&#xff08;CNNs&#xff09;受限于其局部感受野&#xff0c;而视觉转换…

(一)Spring 核心之面向切面编程(AOP)—— 配置及使用

目录 一. 前言 二. 如何理解 AOP 2.1. AOP 是什么 2.2. AOP 术语 2.3. Spring AOP 和 AspectJ 是什么关系 2.3.1. AspectJ 是什么 2.3.2. Spring AOP 和 AspectJ 是什么关系 2.3.3. 动态织入和静态织入 三. AOP 的配置方式 3.1. XML Schema 配置方式 3.2. AspectJ …

CSS综合案例4

CSS综合案例4 1. 综合案例 我们来做一个静态的轮播图。 2. 分析思路 首先需要加载一张背景图进去需要4个小圆点&#xff0c;设置样式&#xff0c;并用定位和平移调整位置添加两个箭头&#xff0c;也是需要用定位和位移进行调整位置 3. 代码演示 html文件 <!DOCTYPE htm…

FLIP解读

title: FLIP解读 mathjax: true toc: true date: 2024-02-06 17:22:20 categories: Machine Learning tags:CLIPMasked AutoencodersContrastive Learning FLIP由CLIP改进而来&#xff0c;其思想非常简单&#xff0c;通过在图片侧mask掉相当比例的patch&#xff08;无须重构pa…

C++入门篇(3)auto关键字、内联函数、nullptr关键字

目录 1.auto关键字&#xff08;C11&#xff09; 1.1 typedef取别名的缺陷 1.2 auto 1.3 auto使用细则 1.3.1 auto与指针引用结合使用 1.3.2 同一行定义多个变量 1.4 auto不能推导的场景 1.4.1 auto不能作为函数的形参 1.4.2 auto不能直接用来声明数组 2. 内联函数 2…

QCustomplot实现灰度曲线图

从 QCustomplot官网 https://www.qcustomplot.com/index.php/download 下载支持文件。首页有些demo可以进行参考学习。 新建一个Qt工程&#xff0c;将下载得到的qcustomplot.h和qcustomplot.cpp文件加入到当前工程。pro文件中加上 printsupport 在ui界面中&#xff0c;添加一…

THM学习笔记——枚举

复制以下内容时注意中英文符号区别 在枚举之前我们要将shell升级为完全交互式的tty。 这涉及以下几条命令 python -c import pty;pty.spawn("/bin/bash") stty raw -echo export TERMxterm rlwrap nc -lvnp 443 从以上选一条即可 手动枚举 以下命令只需了解即可&…

git 使用 (备查)

git忽略清单 添加忽略清单 SSH免登录 ssh协议可以实现免登录操作&#xff0c;身份验证通过密钥实现。 跨团队写作 解决冲突 拉取 克隆 拉取最新版本 推送 远程仓库别名 直接使用git push推送 多人协作开发 分支命令 合并分支命令在主分支使用&#xff0c;将develop分支合并到…

《向量数据库指南》——Milvus Cloud 「部署」:简化部署一直在路上

“docker-compose 能部署分布式吗?”"单机部署为什么还依赖这么多组件?"“大家 Milvus Cloud 集群部署有没有实践过比较好的方案?” 作为一个开源数据库,是否能够进行快速部署,是所有工作的前提。在简化部署的道路上,社区从来没有停止过脚步。2023 年,社区推…

使用 openpyxl 操作 Excel

由于单位有任务&#xff0c;需要按照名册制作多个工作表。手动复制和修改内容太费事了&#xff0c;所以使用python完成此项工作&#xff0c;为之后的此类工作提供一个通用脚本。 安装依赖库 pip install openpyxl lxml我们需要用到openpyxl。在官方文档中提到&#xff0c;如果…

【Git】07 本地仓库同步到GitHub或Gitee

文章目录 一、远端仓库配置1.1 配置密钥认证1.2 新建仓库 二、本地配置2.1 添加远程库 三、push推送四、拉取合并与推送4.1 拉取fetch4.2 合并merge4.3 推送push 五、总结 一、远端仓库配置 1.1 配置密钥认证 1&#xff09;ssh-keygen 本地端命令行上执行ssh-keygen命令&…

2024-02-06(Sqoop)

1.Sqoop Apache Sqoop是Hadoop生态体系和RDBMS&#xff08;关系型数据库&#xff09;体系之间传递数据的一种工具。 Sqoop工作机制是将导入或者导出命令翻译成MapReduce程序来实现。在翻译出的MapReduce中主要是对inputformat和outputformat进行定制。 Hadoop生态包括&#…