文章目录

  • 一、Docker-compose概述
  • 二、官方下载安装
    • 1、安装
    • 2、修改权限
    • 3、创建指向/usr/bin或路径中任何其他目录的符号链接
  • 三、国内下载安装
    • 1、安装
    • 2、授予执行权限
    • 3、指向环境变量的软链在这里插入代码片
    • 4、查看版本
  • 四、卸载
  • 五、应用案例
    • 1、定义微服务应用并构建镜像(准备springboot.jar 镜像)
      • 3)pom文件
      • 2)配置文件
      • 2)编写Dockerfile
      • 3、构建镜像
    • 2、编写docker-compose.yml 定义业务单元
    • 3、启动并运行整个应用程序(一键部署)
    • 4、进入MySQL容器,创建库,创建表
    • 5、测试接口
    • 6、停止服务

一、Docker-compose概述

官方说明文档
下载地址

docker建议我们每一个容器中只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来但是这样我们又面临了一个问题?

如果我需要同时部署好多个服务,难道要每个服务单独写Dockerfile然后在构建镜像,构建容器,这样累都累死了,所以docker官方给我们提供了docker-compose多服务部署的工具

例如要实现一个Web微服务项目,除了Web服务容器本身,往往还需要再加上后端的数据库mysql服务容器,redis服务器,注册中心eureka,甚至还包括负载均衡容器等等。。。。。。

Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

二、官方下载安装

1、安装

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2、修改权限

sudo chmod +x /usr/local/bin/docker-compose

3、创建指向/usr/bin或路径中任何其他目录的符号链接

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

三、国内下载安装

1、安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

2、授予执行权限

sudo chmod +x /usr/local/bin/docker-compose

3、指向环境变量的软链在这里插入代码片

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4、查看版本

docker-compose version

四、卸载

sudo rm /usr/local/bin/docker-compose

五、应用案例

1、定义微服务应用并构建镜像(准备springboot.jar 镜像)

3)pom文件

<?xml version="1.0" encoding="UTF-8"?>
<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"><parent><artifactId>sk-springcloudalibaba</artifactId><groupId>com.buba</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>test-server</artifactId><packaging>jar</packaging><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.13-SNSAPSHOT</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 指定该Main Class为全局的唯一入口 --><mainClass>com.buba.TestServer</mainClass><layout>ZIP</layout></configuration><executions><execution><goals><!--可以把依赖的包都打包到生成的Jar包中--><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

2)配置文件

server:port: 7001
spring:application:name: test-serverdatasource:druid:url: jdbc:mysql://mysql:3306/testdb?serverTimezone=Asia/Shanghaiusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:mapper-locations: classpath:/mappers/*.xml

2)编写Dockerfile

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

3、构建镜像

docker build -t test-server:1.0 .
[root@localhost dockercompose]# docker build -t test-server:1.0 .
Sending build context to Docker daemon  25.67MB
Step 1/7 : FROM openjdk:11
11: Pulling from library/openjdk
0e29546d541c: Pull complete
9b829c73b52b: Pull complete
cb5b7ae36172: Pull complete
6494e4811622: Pull complete
668f6fcc5fa5: Pull complete
dc120c3e0290: Pull complete
8f7c0eebb7b1: Pull complete
Digest: sha256:33c346c637ebb17823cbeda4d4e5601c66262752dadcae559a03b090f6505a47
Status: Downloaded newer image for openjdk:11---> 5505a9a39df1
Step 2/7 : MAINTAINER qlx---> Running in 5500ead17dd3
Removing intermediate container 5500ead17dd3---> 61e15bb4e752
Step 3/7 : VOLUME /tmp---> Running in 3abe80b3b46f
Removing intermediate container 3abe80b3b46f---> e957f7f2e152
Step 4/7 : ADD test-server-1.0-SNAPSHOT.jar test-server.jar---> 06b730a5c91e
Step 5/7 : RUN bash -c 'touch /test-server.jar'---> Running in f6b816308280
Removing intermediate container f6b816308280---> 4600c698861a
Step 6/7 : ENTRYPOINT ["java","-jar","/test-server.jar"]---> Running in 485b7bb9f08c
Removing intermediate container 485b7bb9f08c---> faf79c8b5403
Step 7/7 : EXPOSE 7001---> Running in 80bf15f9f1e4
Removing intermediate container 80bf15f9f1e4---> 0ec87b007192
Successfully built 0ec87b007192
Successfully tagged test-server:1.0
[root@localhost dockercompose]#
[root@localhost ~]# docker images
REPOSITORY      TAG       IMAGE ID       CREATED          SIZE
test-server     1.0       0ec87b007192   29 minutes ago   711MB
centos_java19   1.0       9a2a437cb5d1   3 days ago       969MB
openjdk         11        5505a9a39df1   10 months ago    659MB
registry        latest    b8604a3fe854   12 months ago    26.2MB
centos          6.10      f1af727749c4   14 months ago    194MB
centos          7         eeb6ee3f44bd   14 months ago    204MB
centos          latest    5d0da3dc9764   14 months ago    231MB

2、编写docker-compose.yml 定义业务单元

官方文档

version: "3"
services:microService:image: test-server:1.0container_name: test-serverports:- "7001:7001"volumes:- /app/test-server:/datanetworks:- buba_netdepends_on:- mysqlmysql:image: mysql:8.0environment:MYSQL_DATABASE: testdbMYSQL_ROOT_PASSWORD: 123456ports:- '3306:3306'volumes:- /app/mysql/db:/var/lib/mysql- /app/mysql/conf/my.cnf:/etc/my.cnf- /app/mysql/init:/docker-entrypoint-initdb.dnetworks:- buba_netcommand: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:buba_net:

3、启动并运行整个应用程序(一键部署)

 # 启动所有docker-compose服务
docker-compose up
# 启动所有docker-compose服务并后台运行
docker-compose up -d

4、进入MySQL容器,创建库,创建表

5、测试接口

6、停止服务

docker-compose stop      # 停止服务

docker-compose(部署微服务+MySQL)相关推荐

  1. Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)

    场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...

  2. docker compose 部署 NGINX + PHP+MySQL

    安装DOCKER sudo apt-get update sudo apt-get remove docker.io containerd runc sudo apt-get install ca-c ...

  3. docker+docker-compose部署微服务项目

    1.安装docker 1.1.配置官方源: sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/ ...

  4. 从零开始一步一步搭建Ubuntu Server服务器、修改数据源、安装Docker、配置镜像加速器、Compose部署Gitlab服务

    场景 最终目的是使用Docker Compose部署一个Gitlab服务. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程 ...

  5. 基于Gitlab Jenkins Docker集群 微服务搭建自动化部署平台

    随着公司应用系统的不断增多,原有手工部署流程越来越不满足上线的需求.为了各个系统能快速迭代与测试,减少上线流程时间和人为出错,迫切需要一套自动化部署系统. 转载原文:https://luoji.liv ...

  6. docker部署微服务项目

    上次有人说部署单个springboot项目和ssm写的非常的简单可以写一篇docker部署微服务的结构的文章的吗 安排 什么是微服务? 微服务架构是一种将单个应用程序作为一套小型服务开发的方法,每种应 ...

  7. docker compose部署服务

    1 用docker compose部署服务 - 需求:假如现在我们手里有很多容器,每个容器对应每个服务,有nginx容器,redis容器,mysql容器等.现在我们需要批量化的去管理,批量启动,停止, ...

  8. 《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务

    文章目录 二.高级篇(大厂进阶) 5.Docker-compose容器编排 5.1是什么 5.2能干嘛 5.3去哪下 5.4 Compose核心概念 5.5 Compose使用的三个步骤 5.6 Co ...

  9. IDEA集成Docker插件实现一键自动打包部署微服务项目

    一. 前言 大家在自己玩微服务项目的时候,动辄十几个服务,每次修改逐一部署繁琐不说也会浪费越来越多时间,所以本篇整理通过一次性配置实现一键部署微服务,实现真正所谓的一劳永逸. 二. 配置服务器 1. ...

最新文章

  1. WebMagic之优秀爬虫框架
  2. countByValue
  3. 控制台当前行显示进度条,不换行
  4. 计算机Word应用程序,Word2007目录设置_计算机软件和应用程序_IT /计算机_信息
  5. linux的文件 I/O操作
  6. “基因编辑婴儿”惹争议,那你知道机器学习在脱靶效应中的作用吗?
  7. 如何让select选项的那个请选择不被选中
  8. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout...
  9. 客户细分常见的十大错误
  10. java.lang.ClassNotFoundException: net.sf.json.JSONObject
  11. python docx 提取图片_python 解析docx文档的方法,以及提取插入的文本对象和图片...
  12. (一)绪论 | 如何判断某数据结构是逻辑结构还是存储结构,是线性结构还是非线性结构
  13. postman替换快捷键ctrl加什么_你会用 Ctrl + ~ 键吗?
  14. Windows 2008 R2 标准版 ie提示 当前安全设置不允许下载该文件 解决办法
  15. 如何克隆linux操作系统,Ubuntu Linux操作系统的3种克隆方法
  16. Leetcode838: 推多米诺(medium)
  17. 内存管理pbuf.h头文件源码解析——LwIP学习
  18. java object取数据_java使用ObjectInputStream从文件中读取对象
  19. GPGPU-SIM 使用篇
  20. C#第七课文字游戏2.0版本

热门文章

  1. 2021-2027全球与中国同种异体人类软骨细胞市场现状及未来发展趋势
  2. 流媒体相关技术了解入门
  3. 第十七届“科大讯飞杯”题解
  4. agm x2 android8.0,【AGMX2评测】性能:八核骁龙小钢炮_AGM X2_手机评测-中关村在线...
  5. 【Python爬虫】有道翻译
  6. 使用EasyUI实现修改删除功能
  7. vnc移植_【安富莱】开源原创高级玩法,用F429接SDRAM虚拟远程VNC桌面
  8. python虚拟仿真_中国美术学院
  9. 致远OA ajax.do 任意文件上传 (CNVD-2021-01627) 漏洞复现
  10. 苹果新一代iPad Pro规格配置怎样?