Java Maven项目实现自动化部署到Docker上_自动部署到docker

更新配置信息(这样就不需要重启防火墙了)

firewall-cmd --reload

查看服务器开放端口

netstat -tlun

项目层面配置

项目pom文件引入插件

添加maven-compiler-plugin插件如下

<build>
    <!-- install后的jar包名称 -->
    <finalName>${project.artifactId}</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.2.2</version>
            <configuration>
                <!-- 镜像名称,相当于执行docker build -t 命令后面跟的镜像名称 -->
                <imageName>shr/${project.artifactId}</imageName>

                <!-- Dockerfile文件存放目录 -->
                <dockerDirectory>src/main/docker</dockerDirectory>

                <!-- docker远程服务器地址 -->
                <dockerHost>http://192.168.68.68:2375</dockerHost>
                
                <!--指定pem证书文件路径地址 -->
                <dockerCertPath>${project.basedir}docker-pem</dockerCertPath>


                <!-- 指定tag版本 -->
                <!--<imageTags>
                    <imageTag>1.0</imageTag>
                </imageTags>-->

                <!-- build 时强制覆盖 tag,配合 imageTags 使用-->
                <!--<forceTags>true</forceTags>-->

                <!-- 这里是复制 jar 包到 docker 容器指定目录配置 -->
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
            <executions>
                <!-- 执行mvn install时,执行 build、tag 操作-->
                <execution>
                    <id>build-image</id>
                    <phase>install</phase>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
                
                <!-- tag 用于给镜像打标签-->
                <!--<execution>
                    <id>tag-image</id>
                    <phase>package</phase>
                    <goals>
                        <goal>tag</goal>
                    </goals>
                    <configuration>
                        <image>${project.artifactId}:latest</image>
                        <newName>${project.artifactId}:${project.version}</newName>
                    </configuration>
                </execution>-->
                
                <!-- maven执行deploy时push镜像 -->
                <!--<execution>
                    <id>push-image</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>push</goal>
                    </goals>
                    <configuration>
                        <imageName>${project.artifactId}:${project.version}</imageName>
                    </configuration>
                </execution>-->
            </executions>
        </plugin>
    </plugins>
</build>

比较重要的参数含义如下

dockerHost:   docker所在的服务器地址

dockerDirectory:  dockerFile文件路径,也就是下面所要说的

dockerCertPath: 安全证书路径,这是为了安全的, 非必须,如果需要自行查找资料

编写Dockerfile文件

文件如下,如有需要再自行进行修改

FROM frolvlad/alpine-java:jdk8-slim
MAINTAINER zxc
ADD ./lib/local_policy.jar  /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/local_policy.jar
ADD ./lib/US_export_policy.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/US_export_policy.jar
ADD ./target/yourproject.jar /web.jar
VOLUME /logs
EXPOSE 8805/tcp
ENTRYPOINT ["sh","-c","java -Dfile.encoding=UTF8 -Duser.timezone=GMT+8 -jar /web.jar"]

其中比较重要的参数含义如下

ADD ./target/yourproject.jar /web.jar:    就是把maven的项目添加到根目录,并改名为 web

VOLUME /logs :  日志文件挂载

EXPOSE 8805/tcp   暴露的端口, 对外访问的,一般跟项目端口一样即可

执行install

就是常规的maven install指令,   mvn install, 然后去docker所在服务器执行如下指令

docker images 就能看到你的项目在上面了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值