一、构建javaweb服务的docker镜像和容器化启动服务
1、开启docker远程访问
a、vi /lib/systemd/system/docker.service
b、在ExecStart=后追加如下配置
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
c、刷新配置:systemctl daemon-reload
d、验证成功:http://172.21.25.56:2375/version
2、pom.xml
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- 打包跳过单元测试 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.2.0</version>
<configuration>
<!-- Docker宿主机地址 -->
<dockerHost>http://172.21.25.56:2375</dockerHost>
<!-- 镜像名字:版本号 -->
<imageName>${project.artifactId}:${project.version}</imageName>
<!-- true 会覆盖构建相同标签的镜像 -->
<forceTags>true</forceTags>
<!--指定 Dockerfile 位置-->
<dockerDirectory>src/main/docker</dockerDirectory>
<!-- 将jar文件从target目录复制到镜像的根目录 -->
<resources>
<resource>
<targetPath>/</targetPath>
<!--指定需要复制的根目录,下面表示target目录-->
<directory>${project.build.directory}</directory>
<!--指定需要复制的文件,下面指的是打包后的jar包文件-->
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
3、创建Dockerfile(src/main/docker目录下)
# 指定基础镜像
# 你的开发环境是jdk8,就使用下面命令
# FROM openjdk:8-jdk-alpine
# openjdk9 在18年3月分开始不支持了, 支持从11开始,如果说你使用jdk1.9,则使用jdk14
FROM openjdk:14.0-jdk
# 数据卷,宿主机文件夹挂载到容器
VOLUME /tmp
# 环境变量
# 在创建容器时使用 -e 可改变值,如 -e CONTEXT_PATH=/app
ENV PORT=8080
ENV CONTEXT_PATH=/app
# 复制文件
#ADD 包名.jar app.jar
ADD *.jar app.jar
# Docker容器启动时执行的命令,注意:是 -D 开头。如果有换行,后面要加上英文状态的 进行连接
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","-Dserver.port=${PORT}","-Dserver.servlet.context-path=${CONTEXT_PATH}","/app.jar"]
4、运行命令
打包并构建镜像:mvn clean package docker:build(注意:jar包名不要有大写字母)
启动容器:docker run -id --name=容器名 -p 宿主端口:8090 -e PORT=8090 -e CONTEXT_PATH=/docker 镜像ID
查看日志:docker logs -f 容器ID