docker 部署项目

发布于:2024-03-28 ⋅ 阅读:(13) ⋅ 点赞:(0)

项目结构

编写Dockerfile

#FROM:基于java:8镜像构建
FROM openjdk:8
#EXPOSE:监听8080端口,暴露容器的8080端口,该端口余项目端口需要一致
EXPOSE 8080
#ARG:引用plugin中配置的 JAR_FILE 文件
ARG JAR_FILE
#ADD:将当前 target 目录下的 jar 放置在根目录下,命名为 tom.jar,推荐使用绝对路径。
ADD target/${JAR_FILE} /tom.jar
#ENTRYPOINT:执行命令 java -jar /tom.jar
ENTRYPOINT ["java", "-jar","/tom.jar"]

#打包成镜像
# mvn clean package dockerfile:build -Dmaven.test.skip=true
#结果为
#[root@VM-12-15-centos tom]# docker images
#REPOSITORY               TAG              IMAGE ID       CREATED          SIZE
#tom/tom                  0.0.1-SNAPSHOT   28ddda16f21a   28 minutes ago   568MB
#jenkins/jenkins          latest           63914f7b7fd6   2 months ago     474MB
#portainer/portainer-ce   latest           1a0fb356ea35   3 months ago     294MB
#boot/10                  latest           ca586b8faec7   7 months ago     575MB
#nginx                    latest           89da1fb6dcb9   8 months ago     187MB
#jenkinsci/blueocean      latest           04540a0bb985   18 months ago    579MB
#openjdk                  8                b273004037cc   20 months ago    526MB


#运行容器,宿主端口:容器端口
#docker run -d -p 8080:8080 --name tom  tom/tom:0.0.1-SNAPSHOT
#结果为
#CONTAINER ID   IMAGE                           COMMAND                CREATED          STATUS          PORTS                                                           NAMES
#e11339f87323   tom/tom:0.0.1-SNAPSHOT          "java -jar /tom.jar"   32 minutes ago   Up 32 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp                       tom
#33d9ac278812   portainer/portainer-ce:latest   "/portainer"           52 minutes ago   Up 52 minutes   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   portainer22

pom文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.my</groupId>
	<artifactId>tom</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>tom</name>
	<description>Demo project for Spring Boot</description>
	<properties>
		<java.version>1.8</java.version>
		<docker.image.prefix>tom</docker.image.prefix>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>


		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.7</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.2.16</version>
		</dependency>

<!--		<dependency>-->
<!--			<groupId>org.mybatis.spring.boot</groupId>-->
<!--			<artifactId>mybatis-spring-boot-starter</artifactId>-->
<!--			<version>2.3.1</version>-->
<!--		</dependency>-->
		<!-- 集成redis依赖  -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-redis</artifactId>
		</dependency>

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>3.2.0</version>
		</dependency>

		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.6</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
		<!--Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,
        使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。-->
		<dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-all</artifactId>
			<version>5.7.16</version>
		</dependency>

		<!-- lombok依赖 -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<!-- alibaba的fastjson -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.60</version>
		</dependency>
		<!-- 工具包 -->
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.8.1</version>
		</dependency>
		<!-- rsa加密工具-->
		<dependency>
			<groupId>org.bouncycastle</groupId>
			<artifactId>bcprov-jdk15on</artifactId>
			<version>1.55</version>
		</dependency>

<!--		计算内存大小-->
		<dependency>
			<groupId>org.openjdk.jol</groupId>
			<artifactId>jol-core</artifactId>
			<version>0.9</version>
		</dependency>

	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>dockerfile-maven-plugin</artifactId>
				<version>1.4.13</version>
				<executions>
					<execution>
						<id>default</id>
						<goals>
							<goal>build</goal>
							<goal>push</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<!--	镜像的 REPOSITORY 值 -->
					<repository>${docker.image.prefix}/${project.artifactId}</repository>
					<!--	镜像的 TAG 值				-->
					<tag>${project.version}</tag>
					<!--  jar 名称,供Dockerfile 使用-->
					<buildArgs>
						<JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
					</buildArgs>
				</configuration>
			</plugin>

		</plugins>
	</build>

</project>

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到