Vue+SpringBoot项目docker一键部署

项目编写完了,到了部署这一步发现过程比较繁杂,部署完后端部署前端。为了避免每次更新项目后繁琐的部署流程,选择docker可以一键部署,非常的方便,本文使用docker-compose,编写docker-compose.yml,实现一键部署与起停服务。

Compose 简介

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

本文编写server.Dockerfile和fe.Dockerfile来安装前后端环境和编译项目,其中涉及到的配置文件有settings.xml和ngnix.conf,加上docker-compose.yml共5个文件。

server.Dockerfile

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 指定基础镜像
FROM registry.cn-hangzhou.aliyuncs.com/acs/maven:3-jdk-8
# 维护者信息
MAINTAINER xyueji

RUN echo "-------------------- server环境配置 --------------------"

# 暴露8099端口
EXPOSE 8099
# 设置环境编码UTF-8
ENV LANG C.UTF-8
# 运行 - 配置容器,使其可执行化
WORKDIR /app
RUN mkdir server
COPY ./code/server ./server

# 修改maven配置
RUN rm -rf /usr/share/maven/conf/settings.xml
COPY ./settings.xml /usr/share/maven/conf/settings.xml # 从本地拷settings.xml
# 编译
RUN cd server && mvn clean package -Pdev
RUN cp -r /app/server/target/server-1.0.0/* /app
COPY ./code/jars/* /app/lib/

fe.Dockerfile

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# node镜像
FROM registry.cn-hangzhou.aliyuncs.com/acs-sample/node:latest as build-stage
# 维护者信息
MAINTAINER xyueji

RUN echo "-------------------- web环境配置 --------------------"

# 指定接下来的工作路径为/app - 类似于cd命令
WORKDIR /app
# 拷贝前端项目到app目录下
COPY ./code/fe/ ./

# 设置淘宝npm镜像
RUN npm config set registry https://registry.npm.taobao.org \
&& npm install -g cnpm
# 安装依赖
RUN cnpm install

# 打包 - 目的:丢到nginx下跑
RUN cnpm run build

# 前端项目运行命令
CMD ["npm","run","start"]


# ======================== 上:npm打包 下:nginx运行 ========================
# nginx镜像
FROM registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest as production-stage
# 维护者信息
MAINTAINER xyueji

# 移除nginx容器的default.conf文件、nginx配置文件
RUN rm /etc/nginx/conf.d/default.conf
RUN rm /etc/nginx/nginx.conf
# 把主机的nginx.conf文件复制到nginx容器的/etc/nginx文件夹下
COPY ./nginx.conf /etc/nginx/
# 拷贝前端vue项目打包后生成的文件到nginx下运行
COPY --from=build-stage /app/dist /usr/share/nginx/html

# 暴露80端口
EXPOSE 80

# 注:CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令。
# RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参数,如:docker build --no-cache

# 使用daemon off的方式将nginx运行在前台保证镜像不至于退出
CMD ["nginx", "-g", "daemon off;"]

docker-compose.yml

内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
version: '3'
services:
server: # 后端springboot容器
container_name: server # 容器名为'server'
restart: always # 重启策略: 容器退出时总是重启容器
build:
context: ./ # 指定设定上下文根目录,然后以该目录为准指定Dockerfile
dockerfile: ./server-Dockerfile
working_dir: /app
environment:
TZ: Asia/Shanghai
volumes: # 挂载文件
- ./logs/:/app/logs # 映射容器产生的日志到主机的logs文件夹
ports: # 映射端口
- "8099:8099"
command: sh ./bin/start.sh # 后端服务启动脚本命令,注意:后端服务不能后台运行,会不断重启

fe: # 前端node容器(运行nginx中的Vue项目)
container_name: fe # 容器名为'fe'
restart: always # 重启策略: 容器退出时总是重启容器
build:
context: ./ # 指定设定上下文根目录,然后以该目录为准指定Dockerfile
dockerfile: ./fe-Dockerfile
environment:
TZ: Asia/Shanghai
ports:
- "80:80" # 映射端口
depends_on: # 依赖于server容器,被依赖容器启动后此fe容器才可启动
- server

相关命令

1
2
3
docker-compose build    # 编译环境
docker-compose up # 起服务
docker-compose down # 停服务

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. Compose 简介
  2. 2. server.Dockerfile
  3. 3. fe.Dockerfile
  4. 4. docker-compose.yml
  5. 5. 相关命令
,