docker小白第十三天-compose容器编排

docker-compose容器编排

Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成一个应用。你需要定义一个YAML格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。

官网地址

# 官网地址
https://docs.docker.com/compose/compose-file/compose-file-v3/
# 官网下载地址
https://docs.docker.com/compose/install/

在这里插入图片描述

# 下载docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 赋权
chmod +x /usr/local/bin/docker-compose
# 查看docker版本
docker-compose version

compose核心概念

在这里插入图片描述

compose使用的三个步骤

在这里插入图片描述

compose常用命令

在这里插入图片描述

compose微服务实战

生成的一个jar包上传到host主机上的mydocker目录下。
在这里插入图片描述
dockerfile文件内容如下

# 基础镜像使用java
FROM java:8
# # 作者
MAINTAINER cz
# # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# # 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar cz_docker.jar
# # 运行jar包
RUN bash -c 'touch /cz_docker.jar'
ENTRYPOINT ["java", "-jar", "/cz_docker.jar"]
# #暴露6001端口作为微服务
EXPOSE 6001

然后运行打包dockerfile文件,生成镜像

# 注意代码最后的一个点
docker build -t cz_docker:1.6 .
# 查看是否已经生成镜像
docker images cz_docker:1.6

在这里插入图片描述

不使用docker compose时的部署

# 新建一个mysql容器
docker run -p 3306:3306 --name mysql57 --privileged=true -v /cz/mysql/conf:/etc/mysql/conf.d -v /cz/mysql/logs:/logs -v /cz/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
# 查看生成的容器
docker ps
# 进入mysql容器
docker exec -it mysql57 bash
# 进入mysql
mysql -uroot -p
#输入密码
123456

在这里插入图片描述

# 创建一个新的数据表
create database db2023;
# 使用该数据表
use db2023;

在这里插入图片描述
新建mysql用户表
在这里插入图片描述

# 新建redis容器
docker run -p 6379:6379 --name redis608 --privileged=true -v /apps/redis/redis.conf:/etc/redis/redis.conf -v /apps/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
# 查看生成的容器
docker ps
# 进入redis容器
docker exec -it redis608 bash
# 进入redis数据库
redis-cli -p 6379

在这里插入图片描述

# 运行刚刚打包的镜像boot_docker
docker run -d -p 6001:6001 f519664c0440

运行了三次容器。
在这里插入图片描述

# 本地浏览器输入以下地址,ip换为自己的宿主机地址
http://192.168.0.5:6001/swagger-ui.html#/

在这里插入图片描述
不使用compose的缺点
在这里插入图片描述

使用compose

编辑docker-compose.yml文件

version: "3"
 
services:
  microService:
    image: cz_docker:1.6
    container_name: ms01
    ports:
      - "6001:6001"
    volumes:
      - /app/microService:/data
    networks: 
      - cz_net 
    depends_on: 
      - redis
      - mysql
 
  redis:
    image: redis:6.0.8
    ports:
      - "6379:6379"
    volumes:
      - /app/redis/redis.conf:/etc/redis/redis.conf
      - /app/redis/data:/data
    networks: 
      - cz_net
    command: redis-server /etc/redis/redis.conf
 
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'db2023'
      MYSQL_USER: 'cz'
      MYSQL_PASSWORD: '123456'
    ports:
       - "3306:3306"
    volumes:
       - /app/mysql/db:/var/lib/mysql
       - /app/mysql/conf/my.cnf:/etc/my.cnf
       - /app/mysql/init:/docker-entrypoint-initdb.d
    networks:
      - cz_net
    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
 
networks:
   cz_net: 

进入mydocker文件目录下,编辑docker-compose.yml文件

vim docker-compose.yml

在这里插入图片描述
修改java包的代码,将写死的ip换为服务容器名。

# 文件名application.properties

server.port=6001
# ========================alibaba.druid????=====================
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 不使用compose时连接mysql
# spring.datasource.url=jdbc:mysql://192.168.0.5:3306/boot_docker?useUnicode=true&characterEncoding=utf-8&useSSL=false
# 使用compose时 连接mysql
spring.datasource.url=jdbc:mysql://mysql:3306/boot_docker?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.druid.test-while-idle=false
# ========================redis????=====================
spring.redis.database=0
# 不使用compose时连接redis
# spring.redis.host=192.168.0.5
# 使用compose时 连接redis
spring.redis.host=redis
spring.redis.port=6379
spring.redis.password=
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.mapper-locations=classpath:mapper/*.xml
mybatis.type-aliases-package=com.wang.docker.entities
# ========================swagger=====================
spring.swagger2.enabled=true

在编辑器里maven package命令将微服务形成新的jar包,并上传到linux服务器/mydocker目录下,或者直接在linux机器上在线修改jar包。

# linux机器进入jar包
vim docker_boot-0.0.1-SNAPSHOT.jar
# 定位查找要修改的文件,然后直接回车进入编辑
/application.properties

在这里插入图片描述
然后编写dockerfile,与不使用compose时一样。

# 基础镜像使用java
FROM java:8
# # 作者
MAINTAINER cz
# # VOLUME 指定临时文件目录为/tmp,在主机/var/lib/docker目录下创建了一个临时文件并链接到容器的/tmp
VOLUME /tmp
# # 将jar包添加到容器中并更名为zzyy_docker.jar
ADD docker_boot-0.0.1-SNAPSHOT.jar cz_docker.jar
# # 运行jar包
RUN bash -c 'touch /cz_docker.jar'
ENTRYPOINT ["java", "-jar", "/cz_docker.jar"]
# #暴露6001端口作为微服务
EXPOSE 6001
# 删掉旧的运行的容器,通过容器ID辨别
docker rm -f 8c3aa0299d0c 984684e703fe a87ecfac51e1
# 删除生成的旧镜像
docker rmi -f f519664c0440
# 重新构建新版本的镜像
docker build -t cz_docker:1.6 .

在这里插入图片描述

# 启动docker-compose服务
docker compose up -d

在这里插入图片描述

# 查看启动的服务
docker ps

在这里插入图片描述

# 进入mysql容器内部
docker exec -it a61af20bbfcb bash
# 进入mysql数据库 以cz用户进入
mysql -ucz -p
# 查看已有的数据库
show database

可以看到未使用compose时 新建的db2023又被恢复了。
在这里插入图片描述
仍然新建一个t_user表

在这里插入图片描述
浏览器输入地址

# ip地址换为自己宿主机的,
http://192.168.0.5:6001/swagger-ui.html#/user-controller/findUserByIdUsingGET

在这里插入图片描述

相关推荐

  1. Docker Compose 容器编排

    2024-03-22 22:46:04       32 阅读
  2. Docker compose容器编排

    2024-03-22 22:46:04       24 阅读
  3. Docker-Compose容器编排

    2024-03-22 22:46:04       15 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-22 22:46:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-22 22:46:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-22 22:46:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-22 22:46:04       20 阅读

热门阅读

  1. 【Leetcode】top 100 多维动态规划

    2024-03-22 22:46:04       19 阅读
  2. ChatGPT:从智能对话到高效论文写作

    2024-03-22 22:46:04       19 阅读
  3. VPN技术

    2024-03-22 22:46:04       15 阅读
  4. WebRtc实时音波

    2024-03-22 22:46:04       19 阅读
  5. ChatGPT:用AI聊天引擎编写卓越学术论文的秘诀

    2024-03-22 22:46:04       16 阅读
  6. MyBatis进阶应用

    2024-03-22 22:46:04       18 阅读
  7. 面试算法-64-零钱兑换

    2024-03-22 22:46:04       18 阅读
  8. SQL语句之VIEW视图和空值

    2024-03-22 22:46:04       17 阅读
  9. 1185: 手机打字

    2024-03-22 22:46:04       18 阅读
  10. 监督学习(Supervised Learning)的概念和示例

    2024-03-22 22:46:04       18 阅读
  11. 数据结构——单向链表(C语言版)

    2024-03-22 22:46:04       22 阅读
  12. 春招问题总结

    2024-03-22 22:46:04       22 阅读