1,pom.xml,是这样配置的,这样配置是为了把依赖的jar包和配置文件不打包到执行的jar里面
<build>
<resources>
<!--指定src/main/resources资源要过滤-->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<plugins>
<!-- 可执行jar插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<outputDirectory>${project.build.directory}/etc</outputDirectory>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.familylinkedu.web.WebServiceApplication</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>**/*.yml</exclude>
<exclude>**/*.properties</exclude>
</excludes>
</configuration>
</plugin>
<!-- maven资源文件复制插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.shared</groupId>
<artifactId>maven-filtering</artifactId>
<version>1.3</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/etc</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<exclude>**/*.yml</exclude>
<exclude>**/*.properties</exclude>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<encoding>UTF-8</encoding>
</configuration>
</execution>
</executions>
</plugin>
<!-- 依赖包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/etc/lib</outputDirectory>
<!-- 是否不包含间接依赖 -->
<excludeTransitive>false</excludeTransitive>
<!-- 忽略版本 -->
<stripVersion>false</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
mavne打包后的目录结构如下,如果大家mavne打包的目录结构不是这样的,在使用docker的时候只需要将dockerfile的COPY文件成自己需要的文件即可
2,将目录etc的所有文件上传到linux服务的一个目录中(目录自己顺便选)
3,在linux目录中编写dockerfile文件
vim Dockerfile
Dockerfile文件内容如下
FROM openjdk:8 #依赖jdk8
COPY web-service-1.0.0-SNAPSHOT.jar /web-service/ #将项目执行jar包复制到docker镜像中自己指定的目录
COPY lib/** /web-service/lib/ #将项目依赖jar包复制到docker镜像中自己指定的目录
COPY application.yml /web-service/ #将配置文件复制到docker镜像中自己指定的目录
COPY application-dev.yml /web-service/
WORKDIR /web-service/ #切换命令执行的工作空间
EXPOSE 8000 #抛出docker镜像中的端口,让外界可以访问
CMD ["nohup","java","-jar","web-service-1.0.0-SNAPSHOT.jar","&"] #执行的java运行命令
4,构建docker镜像
#myapp是自定义的镜像名称
docker build -t myapp .
5,如果在构建的过程中出现错误,或者构建成功,但是镜像未成功run运行,使用以下命令,进入到镜像内部查找问题
docker run -it 3899f524ed34 /bin/bash # 3899f524ed34 是docker build构建失败过程中的临时容器id, 也可以构建成功后的容器id
6,构建完成够就是运行镜像,启动容器了
docker run -d --name app -p 8000:8000 myapp
附上操作过程完整截图
1,dockerfile文件内容
2,构建出错时如何查找问题
3,成功的完整过程
4,成功访问页面,提醒:请开放端口,如果是阿里云服务器,请开放安全组
附上课程中的项目demo:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72567.html