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>
<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>
<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>
<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部署完成。