文章目录

  • 一、Compose入门案例
    • 1. 依赖
    • 2. 实体类
    • 3. mapper接口
    • 4. 启动类
    • 5. yml配置
    • 6. 测试案例
    • 7. 打包
  • 二、制作 DockerFile和docker-compose.yml
    • 2.1. 制作 DockerFile
    • 2.2. docker-compose.yml
  • 三、打包部署
    • 3.1. 资料上传
    • 3.2. 启动docker-compose
    • 3.3. 创建表
    • 3.4. 接口测试
    • 3.5. 数据验证
    • 3.6. Compose常用命令
一、Compose入门案例

流程:

  1. 需要定义一个docker-compose.yml文件----工程
  2. 需要在docker-compose文件配置依赖服务
  3. docker-compose up 执行该文件
1. 依赖

创建springboot项目

   <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
2. 实体类
package com.gblfy.entity;import com.baomidou.mybatisplus.annotation.TableName;
import lombok.*;/**** @Author gblfy* @Date 2022-03-20 8:18**/
@Data
@ToString
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
@TableName("docker_compose_entity")
public class DockerComposeEntity {private Integer id;private String name;
}
3. mapper接口
package com.gblfy.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gblfy.entity.DockerComposeEntity;/**** @Author gblfy* @Date 2022-03-20 8:17**/
public interface DockerComposeMapper extends BaseMapper<DockerComposeEntity> {}
4. 启动类
package com.gblfy;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.gblfy.mapper")
public class DockerComposeApplication {public static void main(String[] args) {SpringApplication.run(DockerComposeApplication.class, args);}}
5. yml配置
spring:datasource:url: jdbc:mysql://mysql:3306/docker-compose-boot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
server:###端口号port: 8080servlet:##设置springboot项目访问路径context-path: /gblfy
6. 测试案例
package com.gblfy;import com.gblfy.entity.DockerComposeEntity;
import com.gblfy.mapper.DockerComposeMapper;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/**** @Author gblfy* @Date 2022-03-20 8:16**/
@RestController
public class DockerComposeController {@Resourceprivate DockerComposeMapper dockerComposeMapper;@PostMapping("/insert")public String insert() {DockerComposeEntity dockerComposeEntity = new DockerComposeEntity();dockerComposeEntity.setId(1);dockerComposeEntity.setName("zhangsan");dockerComposeMapper.insert(dockerComposeEntity);return "success";}
}
7. 打包
mvn clean package -Dmaven.test.skip=true
二、制作 DockerFile和docker-compose.yml
2.1. 制作 DockerFile
# Docker image for springboot file run
#VERSION 0.0.1
#Author: GBLFY
# 基础镜像使用java
FROM java:8
# 作者
MAINTAINER gblfy.com
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp,测试可以这样,企业中这里建议docker真实目录并赋予权限
VOLUME /tmp
# 将jar包添加到容器中并更名为docker-compose-boot.jar
ADD docker-compose-0.0.1-SNAPSHOT.jar docker-compose-boot.jar
# 运行jar包
RUN bash -c 'touch /docker-compose-boot.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker-compose-boot.jar"]
#暴露8080端口
EXPOSE 8080
2.2. docker-compose.yml
version: "3.0"
services:mysql: # mysql服务image: mysql:5.7command: --default-authentication-plugin=mysql_native_password #解决外部无法访问ports:- "3306:3306"      #容器端口映射到宿主机的端口environment:MYSQL_ROOT_PASSWORD: 'root'MYSQL_ALLOW_EMPTY_PASSWORD: 'no'MYSQL_DATABASE: 'docker-compose-boot'MYSQL_USER: 'gblfy'MYSQL_PASSWORD: '123456'networks:- gblfy_webdocker-compose-boot-web: #自己单独的springboot项目hostname: gblfybuild: ./     #需要构建的Dockerfile文件ports:- "38000:8080"      #容器端口映射到宿主机的端口depends_on:      #web服务依赖mysql服务,要等mysql服务先启动- mysqlnetworks:- gblfy_web
networks:  ## 定义服务的桥gblfy_web:

这里演示为了看测试效果,关键的目录映射没有设置,企业中是需要把数据目录和日志目录映射到宿主机目录,简言之,目录挂载

三、打包部署
3.1. 资料上传
docker-compose-0.0.1-SNAPSHOT.jar
docker-compose.yml
Dockerfile

3.2. 启动docker-compose
cd /app/docker-compose-boot
docker-compose up

日志(拉取mysql5.7镜像和jdk8镜像我已经操作过了,下面日志是将springboot项目打包成镜像)

Building docker-compose-boot-web
Step 1/7 : FROM java:8---> d23bdf5b1b1b
Step 2/7 : MAINTAINER gblfy.com---> Running in b052905b2072
Removing intermediate container b052905b2072---> 980a20b17ff7
Step 3/7 : VOLUME /tmp---> Running in d62f63bb0b52
Removing intermediate container d62f63bb0b52---> 51a9d0815625
Step 4/7 : ADD docker-compose-0.0.1-SNAPSHOT.jar docker-compose-boot.jar---> 8c574ff477a7
Step 5/7 : RUN bash -c 'touch /docker-compose-boot.jar'---> Running in 3722a261b8ed
Removing intermediate container 3722a261b8ed---> b6892e5f045a
Step 6/7 : ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/docker-compose-boot.jar"]---> Running in 5bc7270bbfd7
Removing intermediate container 5bc7270bbfd7---> d7c53524cf66
Step 7/7 : EXPOSE 8080---> Running in 92e2c377c0ca
Removing intermediate container 92e2c377c0ca---> f18c2c26bf27
Successfully built f18c2c26bf27
Successfully tagged docker-compose-boot_docker-compose-boot-web:latest
WARNING: Image for service docker-compose-boot-web was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating docker-compose-boot_mysql_1 ... done
Creating docker-compose-boot_docker-compose-boot-web_1 ... done
3.3. 创建表

3.4. 接口测试

http://192.168.92.134:38000/gblfy/insert

3.5. 数据验证

3.6. Compose常用命令
docker-compose -h                           # 查看帮助docker-compose up                           # 创建并运行所有容器
docker-compose up -d                        # 创建并后台运行所有容器
docker-compose -f docker-compose.yml up -d  # 指定模板
docker-compose down                         # 停止并删除容器、网络、卷、镜像。docker-compose logs       # 查看容器输出日志
docker-compose pull       # 拉取依赖镜像
dokcer-compose config     # 检查配置
dokcer-compose config -q  # 检查配置,有问题才有输出docker-compose restart   # 重启服务
docker-compose start     # 启动服务
docker-compose stop      # 停止服务

docker-compose 实战案例相关推荐

  1. docker基础入门和docker compose实战

    Docker运维部署 docker官网:https://www.docker.com/ 文档:https://docs.docker.com/ Docker的文档是超级详细的! 仓库:https:// ...

  2. docker(10):实战案例

    1.使用 Supervisor 来管理进程 Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务.但我们经常需要在一个机器上开启多个服务,这可以有 ...

  3. 从零开始学习docker(十)搭建WordPress+Mysql,为什么要用Docker Compose

    我们从这一节开始介绍一个非常非常重要的工具--Docker Compose,这个工具会经常使用. 先从一个案例介绍一下我们为什么要用Docker Compose. 案例:如何通过容器部署一个WordP ...

  4. Docker容器实战思维

    Docker成功的基础 Docker的实现用到的基础技术(cgroups, namespace,分层文件系统)在Docker之前已经存在很多年,并且 Linux Containers(LXC)也在很多 ...

  5. Docker Compose学习之docker-compose.yml编写规则 及 实战案例

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  6. Docker容器化实战第七课 容器编排Docker Compose、Docker Swarm 和 Kubernetes

    19 如何使用 Docker Compoe 解决开发环境的依赖? 前两个模块,我们从 Docker 的基本操作到 Docker 的实现原理,为你一步一步揭开了 Docker 神秘的面纱.然而目前为止, ...

  7. docker compose 停止_Docker-Compose 基础与实战,看这一篇就够啦

    作者 | 飘渺Jam 责编 | 屠敏 出品 | CSDN 博客 what & why Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.使用前 ...

  8. 构建Docker镜像指南,含实战案例

    [Docker那些事]系列文章 Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT指令的区别 构建Docker镜像指南,含实战 ...

  9. docker compose dns 缓存_Docker深入浅出 | Docker Compose多容器实战

    Docker已经上市很多年,不是什么新鲜事物了,很多企业或者开发同学以前也不多不少有所接触,但是有实操经验的人不多,本系列教程主要偏重实战,尽量讲干货,会根据本人理解去做阐述,具体官方概念可以查阅官方 ...

  10. Docker小白到实战之Docker Compose在手,一键足矣

    前言 Docker可以将应用程序及环境很方便的以容器的形式启动,但当应用程序依赖的服务比较多,或是遇到一个大系统拆分的服务很多时,如果还一个一个的根据镜像启动容器,那就有点累人了,到这有很多小伙伴会说 ...

最新文章

  1. 查看Linux服务器下的内存使用情况
  2. 健康的身体是一切的保证 - 保护偶的颈椎!
  3. 计算机组成原理考试复习
  4. 2.1基本算法之枚举_1812完美立方
  5. Android逆向笔记-Proguard混淆Android代码以及去打印日志信息
  6. 网络安全与管理精讲视频笔记4-数字信封、数字签名、完整性验证、数据加解密及身份认证流程...
  7. 我的Java学习历程03【Java8接口新特性-下】
  8. C# IE环境 - 重置IE( 注册表)
  9. 震动活塞式柱状取样器的使用
  10. 行动是最好的告白,钟意社科院杜兰金融管理硕士项目的你不要错过机会
  11. Python3入门机器学习之2.8scikit-learn中的Scaler
  12. 二十年间的失败软件和系统
  13. safari浏览器找不到服务器
  14. 两个cgi的莫名其妙的core dump问题的解决
  15. android蓝牙查看电池容量_Android查看电池电量的方法(基于BroadcastReceiver)
  16. redis安装+客户端
  17. open judge 1.7.18
  18. c语言画板,简单的像素画板(C语言编写)
  19. iOS compare用法
  20. 两个系统怎样使用通用的接口来对接

热门文章

  1. 田刚院士:鼓励发展新型特色研究型大学
  2. 本想用Python爬遍知乎,没想到却被知乎反杀
  3. 站在前人的肩膀上,新一代数学家正在崛起
  4. vue.js php,vue.js去哪下载
  5. c语言 数组、字符串的形参格式_华中师范大学计算机考研874C语言笔记(一)
  6. NS2相关学习——无线网(2)
  7. CTC 语音基础 GMM EM
  8. 直播回顾:准确性提升到 5 秒级,ssar 独创的 load5s 指标有多硬核?| 龙蜥技术
  9. 基于 Flink + ClickHouse 打造轻量级点击流实时数仓
  10. 这群程序员疯了!他们想成为IT界最会带货的男人