lusiqi

docker部署前后端分离项目resume,部署配置后端springboot的api:dy-web、前端node.js的resume。


resume简介

resume是一个在线编辑markdown格式简历的工具,提供简历分模块的模板插入,编辑完可下载markdown格式文件,也可下载相应的pdf文件。代码实现是由springboot应用作为restful的api,为前端node应用提供markdown文件和pdf文件生成和下载的接口。本文是部署springboot和node的操作步骤。感兴趣的同学可访问 http://resume.lusiqi.com

部署后端项目

docker部署springboot项目,将代码、配置文件、静态文件分别映射到服务器指定的文件上。

修改pom文件

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<build>
<finalName>dy-web</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

<!--打包jar-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/*.properties</exclude>
<exclude>**/*.xml</exclude>
</excludes>
<archive>
<manifest>
<mainClass>com.dy.StartApplication</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
</manifestEntries>
</archive>
<outputDirectory>${project.build.directory}</outputDirectory>
</configuration>
</plugin>

<!--打包依赖lib-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

<!--打包resource-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<encoding>UTF-8</encoding>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<outputDirectory>${project.build.directory}/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>

</plugins>
</build>

将lib、静态文件分离打包,maven install ,将打包后的dy-web.jar解压。

docker镜像

服务器上创建build镜像的文件夹/docker/dy-web,将解压后的dy-web文件夹上传到/docker/dy-web/文件夹内

创建Dockerfile
1
2
3
4
5
6
7
FROM frolvlad/alpine-oraclejdk8:slim
VOLUME /tmp
ARG DEPENDENCY=dy-web
COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY ${DEPENDENCY}/META-INF /app/META-INF
COPY ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.dy.StartApplication"]
build镜像
1
docker build -t dy-web .

外置代码和配置文件

在服务器上创建配置文件夹,用于映射dy-web应用的代码、静态文件、配置文件等。

开放服务器端口

dy-web启动端口为2021,则开放服务器端口,并开放阿里云对外端口。

1
2
3
4
5
6
7
// 开启防火墙
systemctl start firewalld
//开放
firewall-cmd --zone=public --add-port=2021/tcp --permanent

//重启生效
firewall-cmd --reload

配置二级域名:api.lusiqi.com

创建启动容器

1
docker run --name dy-web -it -p 2021:2021  -v /etc/localtime:/etc/localtime  -v /etc/config/dy-web/lib:/app/lib  -v /etc/config/dy-web/template:/app/template -v /etc/config/dy-web/config:/app/config  -v /etc/config/dy-web/com:/app/com  -v /etc/config/dy-web/pdf:/etc/config/dy-web/pdf  -d dy-web

配置nginx反向代理

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name www.api.lusiqi.com api.lusiqi.com;

location / {
proxy_pass http://101.132.97.220:2021;
}

}

配置好,重启nginx,http://api.lusiqi.com/swagger-ui.html 即可访问api的现在文档。至此springboot部署完成。

部署前端项目

docker部署node项目,将代码、配置文件、静态文件分别映射到服务器指定的文件上。

docker镜像

将node代码上传到服务器/docker/resume/

创建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
#选择基础镜像(基于此镜像创建)

FROM node:12.0.0-alpine

#将当前目录中所有文件都加入需要制作的镜像中的/fee目录中

ADD . /resume

#设置当前工作目录

WORKDIR /resume

#加载依赖包

RUN npm install

#定义镜像对外端口

EXPOSE 2022

#默认时间不是国内的,设置为上海(待测-apline版本中,由于精简,需要通过apk安装)

RUN apk update && apk add bash tzdata && cp -r -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#运行程序(在docker run的时候调用)

CMD ["node","app"]

将Dockerfile上传到/docker/resume/ 文件夹中。

build镜像
1
docker build -t resume .

开放端口

开放resume应用的端口2022,同时开放阿里云对外端口。

1
2
3
4
5
6
7
// 开启防火墙
systemctl start firewalld
//开放
firewall-cmd --zone=public --add-port=2022/tcp --permanent

//重启生效
firewall-cmd --reload

配置二级域名 resume.lusiqi.com

创建启动容器

1
docker run --name resume -it -p 2022:2022 -v /etc/localtime:/etc/localtime -v /etc/config/resume/public:/resume/public -v /etc/config/resume/views:/resume/views -v /etc/config/resume/config:/resume/config  -v /etc/config/resume/app:/resume/app -v /etc/config/resume/html:/resume/html -d resume

配置nginx反向代理

1
2
3
4
5
6
7
8
9
server {
listen 80;
server_name www.resume.lusiqi.com resume.lusiqi.com;

location / {
proxy_pass http://101.132.97.220:2022;
}

}

配置好,重启nginx,http://resume.lusiqi.com 即可访问resume简历在线生成页面。至此node部署完成。

 评论