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.mzph.cn/news/671579.shtml

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

相关文章

每天一个数据分析题(一百五十四)

给定下面的Python代码片段&#xff0c;哪个选项正确描述了代码可能存在的问题&#xff1f; from scipy import stats 返回异常值的索引 z stats.zscore(data_raw[‘Age’]) z_outlier (z > 3) | (z < -3) z_outlier.tolist().index(1) A. 代码将返回数据集Age列中第…

rediss集群 三主三从集群模式

三主三从集群模式 1)、新建redis集群目录&#xff1a;7001~7006工作目录【/app/soft/redis-cluster/目下】 2&#xff09;、在7001~7006 目录下创建bin和conf 目录&#xff0c;然后将/app/soft/redis/bin目录下的文件分别拷贝到7001~7006 目录&#xff0c;然后在7001~7006 目…

datax离线同步oracle表到clickhouse实践1

时间&#xff1a;2024.01 目录1、安装启动 oracle19c 容器 2、rpm包安装clickhouse 3、datax安装 4、datax同步 目标库根据要同步的表&#xff0c;按照clickhouse建表规范建表 编写json文件 编写增量同步shell脚本&#xff0c;加入 crond 定时任务 1、安装启动 oracle19c 容器…

SparkJDBC读写数据库实战

默认的操作 代码val df = spark.read.format("jdbc").option("url", "jdbc:postgresql://localhost:5432/testdb").option("user", "username").option("password", "password").option("driver&q…

KtConnect 本地连接连接K8S工具

KT Connect简介 Kt Connect &#xff08;Kubernetes Developer Tool&#xff09;是一个阿里开源、轻量级的面向 Kubernetes 用户的开发测试环境治理辅助工具。其核心是通过建立本地到集群以及集群到本地的双向通道。 1.阿里开源&#xff0c;轻量级, 2. 安装快捷简单&#xf…

【数据结构与算法】堆 / 堆排序 / TopK问题(Heap)

文章目录 1.堆2.C语言实现堆2.1 堆结构与基本操作2.2 其它辅助操作2.3 堆的基本操作2.3.1 插入2.3.2 删除 3. 堆排序4. TopK5. 所有代码 1.堆 堆总是一棵完全二叉树&#xff0c;而完全二叉树更适合使用**顺序结构&#xff08;数组&#xff09;**存储&#xff0c;完全二叉树前h…

蓝桥杯省赛无忧 课件92 行列式

01 什么是行列式 02 行列式的性质 03 高斯消元求行列式

【Flink】FlinkSQL实现数据从Kafka到MySQL

简介 未来Flink通用化,代码可能就会转换为sql进行执行,大数据开发工程师研发Flink会基于各个公司的大数据平台或者通用的大数据平台,去提交FlinkSQL实现任务,学习Flinksql势在必行。 本博客在sql-client中模拟大数据平台的sql编辑器执行FlinkSQL,使用Flink实现数据从Kafka传…

相机图像质量研究(5)常见问题总结:光学结构对成像的影响--景深

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

代码随想录算法训练营第二八天 | 分割 子集

目录 复原IP地址子集子集 II LeetCode 93.复原IP地址 LeetCode 78.子集 LeetCode 90.子集II 复原IP地址 一些字符串的基本操作不会 s.insert(i 1, ‘.’); s.deleteCharAt(i 1); class Solution {List<String> result new ArrayList<>();public List<St…

使用clearml监控模型训练过程

安装依赖 pip install clearml依赖安装好后登陆clearml官网 创建一个工作空间 点击Create new credentials 点击后将api整块复制出来&#xff0c;随后需要在当前终端环境中初始化这个clearml的账户信息 终端输入&#xff1a; clearml-init 在出现的Paste copied configurat…

UDP端口探活的那些细节

一 背景 商业客户反馈用categraf的net_response插件配置了udp探测, 遇到报错了&#xff0c;如图 udp是无连接的&#xff0c;无法用建立连接的形式判断端口。 插件最初的设计是需要配置udp的发送字符&#xff0c;并且配置期望返回的字符串&#xff0c; [[instances]] targets…

2.6:冒泡、简选、直插、快排,递归,宏

1.冒泡排序、简单选择排序、直接插入排序、快速排序(升序) 程序代码&#xff1a; 1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 void Bubble(int arr[],int len);5 void simple_sort(int arr[],int len);6 void insert_sort(int arr[],in…

Vite 下一代的前端工具链,前端开发与构建工具

一、Vite 简介 官方中文网站&#xff1a;Vite | 下一代的前端工具链 官方定义&#xff1a; Vite&#xff0c;下一代的前端工具链&#xff0c;为开发提供极速响应。 Vue3.4版本&#xff0c;Vue新版本使用Vite构建、开发、调试、编译。 Vite的优势 极速的服务启动 使用原生…

2024PMP考试新考纲-近年PMP真题练一练和很详细解析(3)

今天华研荟继续为您分享和解析PMP真题&#xff0c;一方面让大家感受实际的PMP考试和出题形式&#xff0c;另一方面是通过较详细的解题思路和知识讲解帮助大家最后一个多月有效备考&#xff0c;一次性3A通过2024年PMP考试。 2024年PMP考试新考纲-近年真题随机练一练 (注&#x…

企业邮箱是什么?企业邮箱百科

本文将为大家讲解&#xff1a;1、企业邮箱的定义&#xff1b;2、企业邮箱的主要功能特点&#xff1b;3、企业邮箱如何选择和部署&#xff1b;4、企业邮箱的运营与维护&#xff1b;5、企业邮箱在实际工作中的应用与挑战&#xff1b;6、2024年最新五大企业邮箱盘点   下面提到的…

Redis——面试+思想+应用

文章目录 简介Redis基本介绍&#xff1a;性能&#xff1a;持久性和复制&#xff1a;补充——重点&#xff1a;Redis额外支持的操作&#xff1a; 使用场景&#xff1a;与Java的集成&#xff1a;Redis集群Redis Sentinel优点&#xff1a;缺点&#xff1a;适用场景&#xff1a; Re…

qt在pro文件中设置utf-8编码

在 Qt 的 .pro 文件中设置使用 UTF-8 编码&#xff0c;可以通过在 .pro 文件中添加以下内容来实现&#xff1a; QMAKE_CXXFLAGS -source-charset UTF-8 QMAKE_CXXFLAGS -execution-charset UTF-8这样设置后&#xff0c;Qt 会将源代码和执行时的字符集都设置为 UTF-8 编码。这…

Redis缓存高可用集群

Redis集群方案 哨兵集群 在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态&#xff0c;如果master节点异常&#xff0c;则会做主从切换&#xff0c;将某一台slave作为master&#xff0c;哨兵的配置略微复杂&#xff0c;并且性能和高可用性等各…

大语言模型训练数据集(1)

CLUECorpusSmall CLUECorpusSmall包含新闻、社区互动、维基百科、评论语料。原始数据和细节描述在这里 语料 链接 CLUECorpusSmall---- https://share.weiyun.com/sC6PMhxx CLUECorpusSmall (BERT格式)---- https://share.weiyun.com/9SPPGUOK News Commentary v13 (ZH-EN) Ne…