environment:
两台服务器:
本地服务器(local):centos7
具备公网ip 的云服务(cloud)centos7
通过内网穿透给两服务器创建一个网络通道
使用工具openvpn或frps,推荐openvpn,frps不知为何会占用很大的资源
(二)local Docker部署前后端
local部署
因为我是通过Docker进行容器化部署的,所以先要打开本地服务器的Docker远程访问权限
打开本地服务器的Docker远程访问权限
修改 /lib/systemd/system/docker.service
vim /lib/systemd/system/docker.service
修改
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
为
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重启Docker
systemctl daemon-reload
systemctl restart docker
开启防火墙的2375端口
firewall-cmd --add-port=2375/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-ports
在浏览器访问curl http://local-ip:2375/version
得到类似下面的json数据,则表示开启成功
后端
1 idea配置docker
打开设置
进行两部配置就行
然后进行镜像源的配置
最后 Apply --> OK
2 集成maven插件
修改pom文件
<properties>
<!--docker镜像的前缀-->
<docker.image.prefix>docker</docker.image.prefix>
</properties>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<!--远程Docker的地址-->
<dockerHost>http://local-ip:2375</dockerHost>
<!--镜像名称,前缀/项目名-->
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
http://local-ip:2375
记得修改
3 docker部署
在项目的根目录下创建/docker/Dockerfile
文件
FROM openjdk:8
VOLUME /tmp
ADD aurora-springboot-0.0.1.jar blog.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/blog.jar"]
注意修改jar包名称路径
创建完成后,依次执行以下操作
之后就可以通过docker images
查看到新生成的镜像啦
# 运行
docker run -d --name blog-backend -p 8080:8080 --restart=always blog
# 查看
docker ps
# 日志
docker logs blog
之后可以通过ApiFox
等api测试软件测试
至此,后端就不熟完成啦
前端
1 构建Dockerfile
文件
在插件市场找到Docker
安装
通过F1
打开命令操作栏,进行如下操作
一路下来插件会根据项目情况为生成Dockerfile
2 解析Dockerfile
FROM node:lts-alpine # 使用node包
ENV NODE_ENV=production # 设置node环境为development
WORKDIR /usr/src/app # 镜像的主目录
# 复制当前目录的文件到 docker镜像主目录中
COPY ["package.json", "yarn.lock", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
# 在docker镜像中执行对应命令
RUN yarn install --production=false --silent
COPY . .
# 暴露端口
EXPOSE 8808
# 增加操作权限
RUN chown -R node /usr/src/app
USER node
# 执行命令
CMD ["yarn", "start:docker"]
参考
可根据需要修改,以下是我的:
FROM node:lts-alpine
# ENV NODE_ENV=production
WORKDIR /path/frontend-app/blog
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install --production --silent && mv node_modules ../
COPY . .
EXPOSE 80
RUN npm install -g @vue/cli-service
RUN npm install babel-plugin-import -D
RUN chown -R node /path/frontend-app/blog
USER node
# 根据需要修改,不懂前端,这个貌似是生产环境的
CMD ["npm", "run", "serve"]
部署
将文件夹压缩上传到local并解压,进入文件夹,执行以下命令
docker build -t imagename ./ # 修改imagename,首次时间会比较久
# 查看镜像
docker images
# 运行
docker run -d --name container-name -p 8081:8080 --restart=always imagesname # 注意,容器端口是8080
# 查看
docker ps
至此,前后端部署都完成啦
要注意修改前后段的配置文件:application.yml
、vue.config.js