美文网首页
Docker Compose入门(Spring Boot+Rea

Docker Compose入门(Spring Boot+Rea

作者: 香菜香菜我是折耳根 | 来源:发表于2020-02-16 21:05 被阅读0次

Docker Compose 可以很方便地将一组相互依赖的容器组合在一起,因此很适合用于测试和开发,以及持续集成环境中。使用 Docker Compose,使用 docker-compose up 即可启动一组服务,极大地提高了开发和测试效率。

注:本篇文章基于 spring-security-react-ant-design-polls-app ,这个项目实现了一个由 Spring Boot 后端、React 前端和 MySQL 数据库组成的 Polling App(投票应用)。

一、Docker Compose 简介

安装详情可以查阅官方文档,简单来说,Mac 系统下 Docker Desktop 里已经包含 docker-compose 可执行文件。如果是 Linux 系统,则:

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

# 加上可执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 测试是否安装成功
docker-compose --version

使用 Docker Compose 分为三个步骤:

  1. 使用 Dockerfile 打包应用;
  2. 创建 docker-compose.yml 来描述一组容器之间的关系;
  3. 运行 docker-compose up 启动一组容器。

一个 docker-compose.yml 结构如下:

version: '3'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

docker-compose.yml 的具体参数含义可以查阅这里

二、快速体验

git clone https://github.com/callicoder/spring-security-react-ant-design-polls-app.git
cd spring-security-react-ant-design-polls-app
docker-compose up

:第一次执行需要编译 Docker 镜像,需要一些时间,之后执行则直接从缓存的本地镜像库取出。

如果编译过程中,网络连接国外服务器较慢,可以使用我已经编译好的镜像,将 build 部分注释:

  app-server:
    image: leopeng1995/spring-security-react-ant-design-polls-app_app-server:0.1
    # # Configuration for building the docker image for the backend service
    # build:
    #   context: polling-app-server # Use an image built from the specified dockerfile in the `polling-app-server` directory.
    #   dockerfile: Dockerfile
  app-client:
    image: leopeng1995/spring-security-react-ant-design-polls-app_app-client:0.1
    # build:
    #   context: polling-app-client # Use an image built from the specified dockerfile in the `polling-app-client` directory.
    #   dockerfile: Dockerfile
    #   args:
    #     REACT_APP_API_BASE_URL: http://127.0.0.1:8080/api

打开浏览器,访问 http://localhost:9090/

开启一个新终端,执行 docker ps 查看当前运行的容器:

CONTAINER ID        IMAGE                                                   COMMAND                  CREATED             STATUS              PORTS                               NAMES
dd37efa0362f        spring-security-react-ant-design-polls-app_app-client   "nginx -g 'daemon of…"   2 hours ago         Up 40 minutes       0.0.0.0:9090->80/tcp                spring-security-react-ant-design-polls-app_app-client_1
826edac574a8        spring-security-react-ant-design-polls-app_app-server   "java -cp app:app/li…"   2 hours ago         Up 40 minutes       0.0.0.0:8080->8080/tcp              spring-security-react-ant-design-polls-app_app-server_1
72fd3bac4e36        mysql:5.7                                               "docker-entrypoint.s…"   2 hours ago         Up 40 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   spring-security-react-ant-design-polls-app_db_1

输出列出了 docker-compose.yml 中描述的三个服务。

可以直接 Ctrl+C 终止 Docker Compose 启动的一组服务,如果使用 docker-compose up -d(后台运行),则使用 docker-compose down 一键停止 。

三、细节详解

体验过 Docker Compose 的效果,下面来解释该项目的一些细节。项目目录下有三个子文件夹:

  • deployments:这里是用于创建 Kubernetes 资源文件,在本篇中略过不表。
  • polling-app-server:Polling App 的后端,由 Spring Boot 实现。
  • polling-app-client:Polling App 的前端,由 React 实现。

前后端应用的 Dockerfile 不是本文的重点,略过不表。重点看项目目录下的 docker-compose.yml

version: '3.7' # docker-compose.yml 的格式版本为 3.7

四、常见的 Docker Compose 应用场景

  • ELK Stack

相关文章

网友评论

      本文标题:Docker Compose入门(Spring Boot+Rea

      本文链接:https://www.haomeiwen.com/subject/rfopfhtx.html