1.检查pom文件
在pom文件要有
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
image-20240705124155937
image-20240705124226099
2.打包项目
可以选择跳过测试进行打包
image-20240705124335091
打包完成后出现target目录出现jar包,(因为jar包包含非常多的依赖,所以基本不会小于1M,如果小于1M可能就是打包配置不对,检查pom文件)
image-20240705124548553
3.运行jar测试
在cmd打开jar所在目录并运行
java -jar xxxx.jar,运行成功就是打包成功了
image-20240705125006278
4.编写 Dockerfile文件
# Docker 镜像构建
# @author <a href="https://github.com/Aixbox">Aixbox</a>
# @from <a href="https://www.aixbox.top">Aixbox-blog</a>
#使用java8基础镜像
FROM openjdk:8-jre
# Copy local code to the container image.
#把jar包添加到镜像中,并且起一个别名(必须起别名,不然会报错)
ADD Remote-CodeSandbox-0.0.1-SNAPSHOT.jar code.jar
# Build a release artifact.
#RUN mvn package -DskipTests
#暴露项目的端口8080
EXPOSE 8080
# Run the web service on container startup.
#镜像运行时运行的命令
CMD ["java","-jar","code.jar"]
5.上传jar和Dockerfile到linux
把jar和Dockerfile放在一个目录中,然后把这个目录上传到linux服务器的文件夹中(注意:上传到的文件夹确保普通用户能够访问,如果只能root用户访问需要更换上传的文件夹,因为上传到root用户才能访问的文件夹后运行否在本机访问linux可能会因权限不足而访问失败)
image-20240705130815387
上传整个文件夹
image-20240705130852319
6.尝试访问
如果在普通用户的身份下进入到了上传的目录,那就是可以的,如果不行就需要更换到其他文件价上传,尤其是ubuntu系统,需要特别注意
image-20240705131047550
7.打包镜像&运行容器
根据项目的不同修改下面的命令
#在上传的文件夹的Dockerfile文件的目录下执行下面的命令进行打包,不是ubuntu可以去掉sudo
# -t 给镜像设置一个标签(名称) .指定了构建上下文,表示使用当前目录的内容构建镜像
sudo docker build -t oj-frontend .
#在上传的文件夹的Dockerfile文件的目录下执行下面的命令运行一个新的容器,不是ubuntu可以去掉sudo
# -d 表示容器在后台运行,不会阻塞当前终端 --name 为容器指定一个名称 -p 8102:80 表示将宿主机的8102端口映射到容器的80端口 oj-frontend 表示用来创建容器的镜像名
sudo docker run -d --name oj-frontend -p 8102:80 oj-frontend
image-20240705132835902
image-20240705132859064
8.开放防火墙&检查运行是否成功
到容器中查看是否启动成功
image-20240705134104851
1.在防火墙中开放刚开启的端口,因为我的防火墙关闭了,无须开放
2.在云服务商平台也要开启端口
image-20240705133858749
在浏览器访问,有数据显示就是部署成功了
image-20240705134341897
本文使用 markdown.com.cn 排版