构建javaweb服务的docker镜像和容器化启动服务

一、构建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
原文地址:https://www.cnblogs.com/linding/p/14886177.html