前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker-Compose

Docker-Compose

原创
作者头像
BNTang
发布2023-09-30 19:46:41
2830
发布2023-09-30 19:46:41
举报
文章被收录于专栏:『学习与分享之旅』

容器编排

是一个容器编排工具,可以通过一个脚本,先安装 Tomcat 容器,在安装 MySQL 容器

容器编排工具

  • 可以通过一个脚本,先安装 Tomcat 容器,在安装 MySQL 容器
  • 容器之间形成一个依赖关系,过程中每一个容器需要的配置文件,都可以进行相应的绑定
  • 将多个容器在一个文件当中进行编排,先执行哪个后执行哪个,称为是容器的编排

Docker-Compose 概述

  • Compose 是一个用户定义和运行多个容器的 Docker 应用程序,是一个容器编排工具
  • 在 Compose 中你可以使用 YAML 文件来配置你的应用服务
  • 只需要一个简单的命令,就可以创建并启动你配置的所有服务
  • Compose 只能在一台宿主机上对容器进行自动化的部署
  • 如果是在集群环境,对很多台宿主机进行部署,就要去使用像 K8S 这些集群部署工具
  • 如果你的 docker 安装在 windows 系统或者是 Mac 系统当中,它里边会自带 docker-compose 工具

Docker-Compose

官网:https://docs.docker.com/

image-20210905015836944
image-20210905015836944

下载 Docker-Compose

代码语言:shell
复制
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

对 Docker-Compose 进行文件夹的授权

代码语言:shell
复制
sudo chmod +x /usr/local/bin/docker-compose

使用 docker-compose -version 查看版本

代码语言:shell
复制
docker-compose -version
image-20210905021740206
image-20210905021740206

SpringBoot 项目打包

首先需要添加(安装)打包插件

代码语言:html
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
image-20210905095148768
image-20210905095148768

执行 install 命令,然后对应的 jar 包就会被打出来

image-20210905095223546
image-20210905095223546

了解了SpringBoot将项目进行打包之后我这里将会给出一个小小的项目就是单表CRUD的包含对应的SQL语句

这里有一个注意点,我把 application.yml 中 datasource 中 url 里面数据库地址换成了 db 如下图所示,这么做的原因就是后面我会利用 docker-compose 来进行替换,就是运行一个 MySQL 容器之后该项目启动的时候依赖于该镜像,会自动的去找该 MySQL 镜像所启动的容器

image-20210905113523638
image-20210905113523638

首先我们需要将 .jar.sql 文件上传到 Linux 服务器系统当中,如下

image-20210905115331907
image-20210905115331907

上图当中我没有进行分包所以分包之后的效果如下图,当然也可以不分

image-20210905122254642
image-20210905122254642

创建 App 的 Dockerfile

进入到 myApp 文件夹当中然后创建 Dockerfile 文件,内容如下

代码语言:shell
复制
FROM openjdk:11.0-jre
WORKDIR /usr/local/my-springboot-project
ADD myProject.jar .
EXPOSE 8808
CMD ["java", "-jar", "myProject.jar"]
image-20210905133457097
image-20210905133457097

构建一个所对应的镜像构建命令如下

代码语言:shell
复制
docker build -t it6666/myapp:1.0 .
image-20210905133709848
image-20210905133709848

以该镜像启动一个容器如下

代码语言:shell
复制
docker run it6666/myapp:1.0
image-20210905133834133
image-20210905133834133

可以看到已经启动完毕了,App 的已经完毕,接下来要介绍的是 MySQL 的打包和启动,这里有一个注意点需要讲解所以我单独的拎出来讲解了如下

创建 DB 的 Dockerfile

代码语言:shell
复制
FROM mysql:8.0
WORKDIR /docker-entrypoint-initdb.d
ADD springboot.sql .
image-20210905134106712
image-20210905134106712

请注意如上的 Dockerfile 内容当中有一句 WORKDIR /docker-entrypoint-initdb.d 这句的含义为就是在以镜像创建所对应的容器的时候做初始化的时候会帮你执行 ADD 命令所对应的 .sql 文件它会自动的帮你进行运行并初始化好所对应的表以及数据库,好了到这里先介绍这么多先构建镜像,待会运行所对应的容器在看这个注意点即可

代码语言:shell
复制
docker build -t it6666/mydb .
image-20210905153417149
image-20210905153417149

构建完毕之后在以该镜像运行一个容器,运行容器命令如下

代码语言:shell
复制
docker run -d -e MYSQL_ROOT_PASSWORD=1234 it6666/mydb:latest

构建完成然后在进入到容器当中,查看数据库如下已经自动的帮你运行了 ADD .sql 所指定的文件内容数据库已经创建好了

代码语言:shell
复制
docker exec -it a4a950ec3df3 bash
image-20210905154508598
image-20210905154508598
image-20210905160503616
image-20210905160503616

如上构建 App 与 DB 都已经讲解完毕,接下来就利用 docker-compose 来将它们整合在一起,一起启动一起关闭,在 myapp 与 mydb 同层级文件夹下创建一个 docker-compose.yml 文件内容如下

代码语言:yaml
复制
version: '3.3'
services:
  db:
    build: ./mydb/
    restart: always
    container_name: mysql
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
    environment:
      MYSQL_ROOT_PASSWORD: 1234
  app:
    build: ./myapp/
    depends_on:
      - db
    ports:
      - "8808:8808"
    restart: always
image-20210905161251430
image-20210905161251430
image-20210905163143922
image-20210905163143922

利用 docker-compose 启动容器命令如下

代码语言:shell
复制
docker-compose up
image-20210905161527893
image-20210905161527893

启动完成即可访问部署好的项目效果如下所示

image-20210905162050963
image-20210905162050963

但是如果使用如上的方式进行启动的话你关闭了项目就停掉了,如果想要在后台运行加上一个 -d 即可

代码语言:shell
复制
docker-compose up -d
image-20210905163123161
image-20210905163123161

如果想要关闭容器可以利用如下命令进行关闭

代码语言:shell
复制
docker-compose down
image-20210905163855945
image-20210905163855945

我正在参与2023腾讯技术创作特训营第二期有奖征文,瓜分万元奖池和键盘手表

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 容器编排
    • 容器编排工具
    • Docker-Compose 概述
    • Docker-Compose
      • 下载 Docker-Compose
      • SpringBoot 项目打包
      • 创建 App 的 Dockerfile
      • 创建 DB 的 Dockerfile
      相关产品与服务
      容器服务
      腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档