docker-compose容器编排部署

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: docker-compose容器编排部署

@toc

  本文是对Docker+Nginx打包部署前后端分离项目这篇文章的补充,原文是简单的用docker部署的,需要一个一个pull镜像,一个一个启动容器,很麻烦,现在使用docker-compose一行命令解决多个容器的启停。

1、Docker-Compose是什么?

  Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。

2、应用场景

  Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

3、docker-compose部署SpringBoot项目

3.1 编写Dockfile

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

3.2 编写docker-compose.yaml

  这里主要三个服务,一个是我们的后端服务,一个redis服务,一个mysql服务

  三个容器使用同一个docker network。

version: "3"

services:
  guigu_auth:
    build:
      context: ./sysrole
      dockerfile: Dockerfile
    container_name: guigu_auth
    restart: always
    privileged: true
    ports:
    - "8800:8800"
    volumes:
      - ./:/data
    networks:
      - auth_network
    depends_on:
      - redis
      - mysql

  redis:
    image: redis:6.0.8
    container_name: redis
    restart: always
    privileged: true
    ports:
    - "6379:6379"
    volumes:
    - ./redis/redis.conf:/etc/redis/redis.conf
    - ./redis/data:/data
    networks:
      - auth_network
    command: redis-server /etc/redis/redis.conf

  mysql:
    image: mysql:8.0.31
    restart: always
    container_name: mysql
    privileged: true
    environment:
      MYSQL_ROOT_PASSWORD: 'wsxhz888'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
      MYSQL_DATABASE: 'guigu-auth'
      MYSQL_USER: 'xtt'
      MYSQL_PASSWORD: 'wsxhz888'
    ports:
    - "3307:3306"
    volumes:
    - ./mysql/db:/var/lib/mysql
    - ./mysql/conf/my.cnf:/etc/my.cnf
    - ./mysql/init:/docker-entrypoint-initdb.d
    networks:
      - auth_network
    command: --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
networks:
  auth_network:

3.3 修改工程配置

  修改配置文件,由于使用的同一个docker network,所以容器之间可以通过域名访问,与IP无关。修改后的配置文件如下所示。

image-20230203174008705

3.4 将相关文件上传到服务器

  后端项目打成jar包并和Dockerfile、docker-compose.yaml一同上传到服务器指定目录下。

  项目打包:

image-20230203174144978

  将文件上传到服务器,上传之后如下所示:

image-20230203175441772

3.5 执行docker-compose up

  运行如下命令:

docker-compose up -d

image-20230203174551316

  查看正在运行的容器:docker ps
在这里插入图片描述

  可以看到,启动了三个容器,分别是我们的后端微服务、redis和mysql。

关闭容器的命令:

docker-compose stop

image-20230203174842035

  再次开启容器:docker-compose up -d

image-20230203174929126

   可以看到,很方便,一个命令实现多个容器的启停,不像原来使用docker那样一个一个关闭和开启容器了。

   这里基本上就完了,可以进入到mysql容器内部建库建表就可以了,如果配置了启动的sql脚本那就更方便了。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4天前
|
Kubernetes Java Docker
使用Kubernetes和Docker部署Java微服务
使用Kubernetes和Docker部署Java微服务
|
4天前
|
jenkins 持续交付 开发者
利用Docker容器化部署应用的实战指南
【6月更文挑战第27天】本文详述Docker应用部署,涵盖Docker基本概念、安装、镜像制作及运行。通过编写Dockerfile构建镜像,使用`docker build`、`run`、`push`及`stop`命令管理。集成CI/CD工具如Jenkins,实现自动化构建、测试和部署,提升开发效率与部署质量。Docker助力轻量级、可移植的微服务架构。
|
9天前
|
测试技术 Linux 网络安全
【Docker项目实战】使用Docker部署RSS阅读器yarr
【6月更文挑战第22天】使用Docker部署RSS阅读器yarr
20 3
|
9天前
|
Docker 容器
如何使用Docker部署WPS Office服务并实现无公网IP远程处理文档表格(二)
使用Docker部署的WPS Office服务可以通过内网穿透工具Cpolar实现远程访问。首先,创建一个名为“wps office”的隧道,选择HTTP协议和3000端口,分配免费的随机域名,并指定中国地区。然后,通过Cpolar的管理界面获取HTTP公网地址,用以远程访问WPS Office。由于随机域名会变化,可以升级Cpolar套餐并保留一个二级子域名,确保长期稳定的远程访问。配置子域名后,更新隧道设置,完成固定公网地址的绑定,从而实现随时随地通过固定地址访问WPS Office。
|
8天前
|
NoSQL Redis Docker
使用 Docker Compose 接管现有容器的文档
使用 Docker Compose 接管现有容器的文档
22 2
|
8天前
|
存储 关系型数据库 MySQL
解读 MySQL 容器信息:`docker inspect` 字段详解
解读 MySQL 容器信息:`docker inspect` 字段详解
24 1
|
2天前
|
消息中间件 监控 RocketMQ
Docker Compose 一键快速部署 RocketMQ
Docker Compose 一键快速部署 RocketMQ
13 0
|
3天前
|
Java API Docker
使用Spring Boot和Docker进行容器化部署
使用Spring Boot和Docker进行容器化部署
|
3天前
|
运维 Serverless 文件存储
函数计算产品使用问题之在利用Docker镜像部署应用时,容器内的应用如何能访问函数计算配置的NAS挂载
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3天前
|
运维 Serverless 文件存储
函数计算产品使用问题之如何将本地代码与容器镜像一起打包部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。

相关产品

  • 容器服务Kubernetes版