基于 Docker-Compose 集成部署前后端服务及数据库服务(Vue+Node+Mysql+Redis)

目前我们大多数服务应该会使用 Docker 来进行部署,但在整个项目需要用到多个服务时,一个一个编排部署就会很麻烦,如我们常见的会有前端服务(Vue)+后端服务(Node)+数据库(Mysql)+缓存(Redis)。这篇文章主要就是讲下怎么使用 Docker-Compose 来一键编排部署我们的服务。

一、安装 Docker 及 Docker-Compose

1. 安装 Docker

linux服务器使用curl下载快速安装的shell脚本

curl -fsSL get.docker.com -o get-docker.sh

下载完成后,可以ls命令查看一下。已经存在的话,使用sh命令执行这个脚本

sh get-docker.sh

注意如果不是root用户,需要使用sudo su获取超级管理员权限。

安装完成后启动一下Docker Server

systemctl start docker

使用docker version命令能看到ClientServer就启动成功了。

2. 安装 Docker-Compose

github 下载 docker-compose的安装文件

sudo curl -L "https://github.com/docker/compose/releases/download/v2.12.2/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 version v2.12.2

到此 DockerDocker-Compose就安装完成了。

二、Vue前端项目及Node后端项目Dockerfile镜像文件配置

image.png

1. 前端项目配置

我这里有一个前端项目一个后端项目,首先在前端项目根目录创建nginx配置文件 nginx.confDocker镜像构建文件Dockerfile

image.png

这里的Dockerfile文件主要是用来构建前端项目的镜像,因为我们是基于nginx来运行我们打包好的前端项目,所以这里需要一个nginx.conf的配置文件来方便修改配置(如果配置有修改,直接在项目里改,然后重新构建就行)。

具体的这两个文件内容可以参考我的另一篇文章

# 基于 Docker 来部署 Vue 或 React 前端项目及 Node 后端服务

2. 后端项目配置

image.png

同样在后端项目根目录创建Docker镜像构建文件Dockerfile

具体的文件内容同样参考那篇文章😀

# 基于 Docker 来部署 Vue 或 React 前端项目及 Node 后端服务

完成上面的步骤后,其实我们可以手动对每个服务进行部署了,但是需要每个服务手动构建和启动等,下面就是用Docker-Compose来一起编排和启动等。

三、使用Docker-Compose来编排前端、后端、数据库、缓存服务

image.png

在整个项目根目录创建docker-compose.yml文件,这就是Docker-Compose的编排配置文件,写入以下内容

version: "3.7"

services:
  frontend:
    build: ./my-nest-todo-frontend
    image: nest-todo-frontend-image
    container_name: nest-todo-frontend-container
    ports:
      - 8080:80

  server:
    build: ./my-nest-todo-server
    image: nest-todo-server-image
    container_name: nest-todo-server-container
    ports:
      - 7001:7001
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:5.7
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=123456

  redis:
    image: redis
    ports:
      - 6379:6379
  • version: 必须指定,它是指定Docker-Compose API的版本,非Docker-Compose引擎版本。

  • services: 指定编排的所有服务,如上面我们有4个服务frontendservermysqlredis

  • frontend: 这就是我们需要构建的前端服务,build指定需要构建镜像的目录,因为我们之前在前端根目录编写了Dockerfile,它会根据这个文件来构建镜像,构建出来的镜像名用image来指定,启动的容器名用container_name来指定,ports就是指定端口的映射,这里是把容器的80端口(nginx默认是80端口)映射到宿主机的8080端口

  • server: 后端服务,同样根据后端项目根目录的Dockerfile文件进行构建,imagecontainer_nameports和前端项目同理,depends_on是表明该服务依赖于哪些服务,如这里表明我们的后端服务依赖于mysqlredis服务,他会在mysqlredis编排启动后再编排启动。

  • mysql: 数据库服务,这里我们用的是mysql5.7environment可以指定环境参数,MYSQL_ROOT_PASSWORD=123456就是把密码设置为123456

  • redis: 缓存服务,项目里用了redis来缓存

四、启动Docker-Compose服务

最后在项目根目录下执行

docker-compose up -d

启动我们所有编排好的服务,启动完全了可以使用

docker-compose ps

来查看我们所有已经启动的容器

image.png

下面列出一下关于docker-compose的常用操作命令

  • 启动服务: docker-compose up -d
  • 停止服务: docker-compose down
  • 列出所有运行容器: docker-compose ps
  • 查看服务日志: docker-compose logs
  • 构建: docker-compose build
  • 启动服务: docker-compose start
  • 停止已运行的服务: docker-compose stop
  • 重启服务: docker-compose restart

到此,我们就完成了使用 Docker-Compose 来编排部署我们的整个服务,对于整个项目的迁移部署很方便,在另一个环境我们只需要执行docker-compose up -d就可以快速搭建一整套服务。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JK凯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值