springboot cloud docker

springboot maven docker 插件部署

一、环境配置

windows环境

1. 设置环境变量

默认情况下,执行mvn docker:build -DpushImage命令时,将尝试连接到localhost:2375上的docker。将DOCKER_HOST环境变量设置为在其他位置连接。

DOCKER_HOST=tcp://:2375

2. docker开启远程服务

接下来要想在windows中操作远程linux中的docker,那前提是必须开启docker远程API。

修改docker配置文件#vi /usr/lib/systemd/system/docker.service ,进入编辑模式后,将ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,改完后如下所示

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

这里就写4个0,你可别改成自己的ip哦,unix:///var/run/docker.sock 保存linux机器docker 命令。保存后退出,重新加载配置文件#systemctl daemon-reload ,启动docker #systemctl start docker ,

输入#netstat -anp|grep 2375 显示docker正在监听2375端口,输入#curl 127.0.0.1:2375/info 显示一大堆信息,证明远程api就弄好了

二、配置maven pom

<build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 没有该配置,devtools 不生效 -->
                    <fork>true</fork>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <configuration>
                    <imageName>${project.artifactId}:${project.version}</imageName>
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <skipDockerBuild>false</skipDockerBuild>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>

        </plugins>
    </build>

对于多模块项目 对依赖的项目不需要生成image  <skipDockerBuild>true</skipDockerBuild> 设置为true

项目根目录下加入dockerfile

FROM openjdk:8-jre-slim
MAINTAINER Rubble

ENV PARAMS=""

#中国标准时间
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

ADD target/paw-uaa-*.jar /app.jar

ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]

运行命令 mvn clean package docker:build

多个项目只生成一个 mvn clean package -pl paw-zuul -am docker:build

mvn clean package docker:build

 

服务端 docker images 既可以看到生成的镜像,docker run 运行镜像,查看日志 docker log myapp 或docker log -f myapp

docker run --name myapp -p 8080:8080 app:version

 

idea docker 插件,非常方便,配置docker远程服务后使用

##坑=======================

有依赖的项目 <skipDockerBuild>true</skipDockerBuild>

没有主函数 ,只能加在有main的模块

<goals>
    <goal>repackage</goal>
</goals>

 docker 会虚拟一些网卡作为内网,注册到注册中心nacos时内网地址, nacos在同一虚拟机可不做处理,直接访问即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值