前置一:利用Dockerfile 将一个war包生成镜像的Dockerfile
1 2 3 4 5 mkdir -p /usr/local/docker/yida/ cd /usr/local/docker/yida 、 # 将桌面qfjy_exam.zip复制到访目录下 cp yida-sync-1.0-SNAPSHOT.zip /usr/local/docker/yida/
1 2 3 4 5 6 7 FROM tomcat WORKDIR /usr/local/tomcat/webapps/ROOT # 指定工作目录 RUN rm -rf * # 删除指定目录所有内容 COPY yida-sync-1.0-SNAPSHOT.zip /usr/local/tomcat/webapps/ROOT # 复制到ROOT下 RUN unzip yida-sync-1.0-SNAPSHOT.zip # 解压文件 RUN rm -rf yida-sync-1.0-SNAPSHOT.zip # 移除多余的压缩包 WORKDIR /usr/local/tomcat # 指定工作目录
1 docker build -t yida-sync :latest .
1 docker run -it yida-sync bash
前置二:Docker部署springboot项目 准备springboot jar项目
Dockerfile
1 2 3 4 5 FROM java:8 VOLUME /tmp ADD yida-sync-1.0-SNAPSHOT.jar app.jar EXPOSE 8080 ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
FROM:表示基础镜像,即运行环境
VOLUME /tmp创建/tmp目录并持久化到Docker数据文件夹,因为Spring Boot使用的内嵌Tomcat容器默认使 用/tmp作为工作目录
ADD:拷贝文件并且重命名(ADD exam-0.0.1-SNAPSHOT.jar exam.jar 将应用jar包复制到/exam.jar)
EXPOSE:并不是真正的发布端口,这个只是容器部署人员与建立image的人员之间的交流,即建立image的人 员告诉容器布署人员容器应该映射哪个端口给外界
ENTRYPOINT:容器启动时运行的命令,相当于我们在命令行中输入java -jar xxxx.jar,为了缩短 Tomcat 的启 动时间,添加java.security.egd的系统属性指向/dev/urandom作为 ENTRYPOINT
构建容器
1 docker build -t yida-sync:latest .
运行容器
1 docker run --rm -d --name 容器名称 -p 8080:8080 镜像名称
其中-d表示后台运行容器,这也就自然地解决的Spring Boot不支持后台运行应用程序的问题。
-p 8080:8080表示将容器内部的8080端口映射到宿主机器的8080端口,这样就可以通过宿主机器直接访问应 用。
–name 给容器取一个容易记住的名字方便日后管理。
查看运行日志
1 docker logs -f --tail=100 容器名称
Maven 插件之 docker-maven-plugin 的使用
在我们持续集成过程中,项目工程一般使用 Maven 编译打包,然后生成镜像,通过镜像上线,能够大大提供上线效率,同时能够快速动态扩容,快速回滚,着实很方便。docker-maven-plugin 插件就是为了帮助我们在Maven工程中,通过简单的配置,自动生成镜像并推送到仓库中。
前置:配置DOCKER_HOST 需要配置DOCKER做镜像的地址,docker-maven-plugin 插件默认连接本地 Docker 地址为:localhost:2375,我们也可以通过i设置环境变量修改DOCKER地址,本地没DOCKER需要配置服务器上DOCKER地址,服务上Docker需要开启远程访问
1 DOCKER_HOST=tcp://<host>:2375
注意:如果没有设置 DOCKER_HOST 环境变量,可以命令行显示指定 DOCKER_HOST 来执行,如我本机指定 DOCKER_HOST:DOCKER_HOST=unix:///var/run/docker.sock mvn clean install docker:build。
也可以直接在pom文件中指定<dockerHost>http://120.48.20.139:2375</dockerHost>
Docker开启远程访问 低版本Docker
1 2 3 4 5 6 7 8 # 修改该Docker服务文件 vi /lib/systemd/system/docker.service # 修改ExecStart这行 将文件内的 ExecStart注释。 新增如下行。 集在ExecStart行最后增加,-H tcp://0.0.0.0:2375 开放远程主机访问权限。 # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
高版本Docker
[root@microservice ~]# vim /usr/lib/systemd/system/docker.service 在ExecStart=/usr/bin/dockerd-current 后面加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
1 2 3 4 5 6 7 8 9 10 11 12 重新加载配置文件和启动: systemctl daemon-reload systemctl start docker # 查看端口是否开启 netstat -nlpt # 如果找不到netstat命令,可进行安装。 yum install net-tools # 直接curl看是否生效 curl http://127.0.0.1:2375/info
1. 示例构建镜像 构建镜像可以使用一下两种方式:
第一种是将构建信息指定到 POM 中
第二种是使用已存在的 Dockerfile 构建
第一种方式,支持将 FROM, ENTRYPOINT, CMD, MAINTAINER 以及 ADD 信息配置在 POM 中,不需要使用 Dockerfile 配置。但是如果使用 VOLUME 或其他 Dockerfile 中的命令的时候,需要使用第二种方式,创建一个 Dockerfile,并在 POM 中配置 dockerDirectory 来指定路径即可。
1.1 指定构建信息到 POM 中构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 <properties > <docker.image.prefix > registry.cn-beijing.aliyuncs.com/zzxxxy</docker.image.prefix > </properties > <plugin > <groupId > com.spotify</groupId > <artifactId > docker-maven-plugin</artifactId > <version > 1.0.0</version > <executions > <execution > <id > build-image</id > <phase > package</phase > <goals > <goal > build</goal > </goals > </execution > </executions > <configuration > <imageName > ${docker.image.prefix}/${project.artifactId}:${project.version}</imageName > <imageTags > <imageTag > ${project.version}</imageTag > </imageTags > <baseImage > openjdk:8-jdk-alpine</baseImage > <maintainer > zzxx zzxx@aliyun.com</maintainer > <workdir > /ROOT</workdir > <cmd > ["java", "-version"]</cmd > <entryPoint > ["java", "-jar", "${project.build.finalName}.jar"]</entryPoint > <dockerHost > http://120.48.20.139:2375</dockerHost > <resources > <resource > <targetPath > /ROOT</targetPath > <directory > ${project.build.directory}</directory > <include > ${project.build.finalName}.jar</include > </resource > </resources > <serverId > aliyun-docker-registry</serverId > <pushImage > true</pushImage > <registryUrl > ${docker.image.prefix}</registryUrl > </configuration > </plugin >
1.2 使用 Dockerfile 构建 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <properties > <docker.image.prefix > registry.cn-beijing.aliyuncs.com/zzxxxy</docker.image.prefix > </properties > <plugin > <groupId > com.spotify</groupId > <artifactId > docker-maven-plugin</artifactId > <version > 1.0.0</version > <executions > <execution > <id > build-image</id > <phase > package</phase > <goals > <goal > build</goal > </goals > </execution > </executions > <configuration > <imageName > ${docker.image.prefix}/${project.artifactId}:${project.version}</imageName > <imageTags > <imageTag > latest</imageTag > </imageTags > <dockerDirectory > ${project.basedir}</dockerDirectory > <dockerHost > http://120.48.20.139:2375</dockerHost > <serverId > aliyun-docker-registry</serverId > <pushImage > false</pushImage > <registryUrl > ${docker.image.prefix}</registryUrl > </configuration > </plugin >
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 FROM openjdk:8 -jdk-alpineRUN mkdir -p /data/config /data/logs COPY target/yida-sync-0.0.1-SNAPSHOT.jar /app.jar WORKDIR /data/ EXPOSE 8111 ENTRYPOINT ["java" ,"-jar" ,"/app.jar" ,"> /data/logs/yida_sync.log 2>&1 &" ]
2. 执行命令 mvn clean package docker:build 只执行 build 操作
mvn clean package docker:build -DpushImage 执行 build 完成后 push 镜像
mvn clean package docker:build -DpushImageTag 执行 build 并 push 指定 tag 的镜像 注意:这里必须指定至少一个 imageTag,它可以配置到 POM 中,也可以在命令行指定。命令行指定如下:mvn clean package docker:build -DpushImageTags -DdockerImageTags=imageTag_1 -DdockerImageTags=imageTag_2,POM 文件中指定配置如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <build> <plugins> ... <plugin> <configuration> ... <imageTags> <imageTag>imageTag_1</imageTag> <imageTag>imageTag_2</imageTag> </imageTags> </configuration> </plugin> ... </plugins> </build>
3. 绑定Docker 命令到 Maven 各个阶段 我们可以绑定 Docker 命令到 Maven 各个阶段,我们可以把 Docker 分为 build、tag、push,然后分别绑定 Maven 的 package、deploy 阶段,此时,我们只需要执行mvn deploy就可以完成整个 build、tag、push操作了,当我们执行mvn build就只完成 build、tag 操作。除此此外,当我们想跳过某些步骤或者只执行某个步骤时,不需要修改 POM 文件,只需要指定跳过 docker 某个步骤即可。比如当我们工程已经配置好了自动化模板了,但是这次我们只需要打镜像到本地自测,不想执行 push 阶段,那么此时执行要指定参数-DskipDockerPush就可跳过 push 操作了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 <properties > <docker.image.prefix > registry.cn-beijing.aliyuncs.com/zzxxxy</docker.image.prefix > </properties > <plugin > <groupId > com.spotify</groupId > <artifactId > docker-maven-plugin</artifactId > <version > 1.0.0</version > <executions > <execution > <id > build-image</id > <phase > package</phase > <goals > <goal > build</goal > </goals > </execution > <execution > <id > push-image</id > <phase > deploy</phase > <goals > <goal > push</goal > </goals > <configuration > <imageName > ${docker.image.prefix}/${project.artifactId}:${project.version}</imageName > </configuration > </execution > </executions > <configuration > <imageName > ${docker.image.prefix}/${project.artifactId}</imageName > <imageTags > <imageTag > latest</imageTag > </imageTags > <dockerDirectory > ${project.basedir}</dockerDirectory > <dockerHost > http://120.48.20.139:2375</dockerHost > <serverId > aliyun-docker-registry</serverId > <pushImage > false</pushImage > <registryUrl > ${docker.image.prefix}</registryUrl > </configuration > </plugin >
以上示例,当我们执行mvn package时,执行 build、tag 操作,当执行mvn deploy时,执行build、tag、push 操作。如果我们想跳过 docker 某个过程时,只需要:
-DskipDockerBuild 跳过 build 镜像
-DskipDockerTag 跳过 tag 镜像
-DskipDockerPush 跳过 push 镜像
-DskipDocker 跳过整个阶段
例如:我们想执行 package 时,跳过 tag 过程,那么就需要mvn package -DskipDockerTag。
4. 使用私有 Docker 仓库地址 实际工作环境中,我们需要 push 镜像到我们私有 Docker 仓库中,使用d ocker-maven-plugin 插件我们也是很容易实现,有几种方式实现:
4.1 修改 POM 文件 imageName 操作 1 2 3 4 5 6 ... <configuration > <imageName > registry.example.com/wanyang3/mavendemo:v1.0.0</imageName > ... </configuration > ...
4.2 修改 POM 文件中 newName 操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... <configuration > <imageName > mavendemo</imageName > ... </configuration > <execution > <id > tag-image</id > <phase > package</phase > <goals > <goal > tag</goal > </goals > <configuration > <image > mavendemo</image > <newName > registry.example.com/wanyang3/mavendemo:v1.0.0</newName > </configuration > </execution > ...
5. 安全认证配置 当我们 push 镜像到 Docker 仓库中时,不管是共有还是私有,经常会需要安全认证,登录完成之后才可以进行操作。当然,我们可以通过命令行 docker login -u user_name -p password docker_registry_host 登录,但是对于自动化流程来说,就不是很方便了。使用 docker-maven-plugin 插件我们可以很容易实现安全认证。
首先在 Maven 的配置文件 setting.xml 中增加相关 server 配置,主要配置 Docker registry用户认证信息。
1 2 3 4 5 6 7 8 9 10 <servers > <server > <id > aliyun-docker-registry</id > <username > zzxx</username > <password > 12345678</password > <configuration > <email > zzxx@mail.com</email > </configuration > </server > </servers >
然后只需要在 pom.xml 中使用 server id 即可。
1 2 3 4 5 6 7 8 9 10 11 12 <plugin > <plugin > <groupId > com.spotify</groupId > <artifactId > docker-maven-plugin</artifactId > <version > 1.0.0</version > <configuration > <serverId > aliyun-docker-registry</serverId > <pushImage > true</pushImage > <registryUrl > ${docker.image.prefix}</registryUrl > </configuration > </plugin > </plugins >
6. 其他参数 docker-maven-plugin 插件还提供了很多很实用的配置,稍微列举几个参数吧。
参数
说明
默认值
<forceTags>true</forceTags>
build 时强制覆盖 tag,配合 imageTags 使用
false
<noCache>true</noCache>
build 时,指定 –no-cache 不使用缓存
false
<pullOnBuild>true</pullOnBuild>
build 时,指定 –pull=true 每次都重新拉取基础镜像
false
<pushImage>true</pushImage>
build 完成后 push 镜像
false
<pushImageTag>true</pushImageTag>
build 完成后,push 指定 tag 的镜像,配合 imageTags 使用
false
<retryPushCount>5</retryPushCount>
push 镜像失败,重试次数
5
<retryPushTimeout>10</retryPushTimeout>
push 镜像失败,重试时间
10s
<rm>true</rm>
build 时,指定 –rm=true 即 build 完成后删除中间容器
false
<useGitCommitId>true</useGitCommitId>
build 时,使用最近的 git commit id 前7位作为tag,例如:image:b50b604,前提是不配置 newName
false
Maven 插件之 dockerfile-maven-plugin 的使用
这个和 docker-maven-plugin一样必须需要配置DOCKER_HOST,默认连接本地 Docker 地址为:localhost:2375,如果docker是在远程则需要配置环境变量DOCKER_HOST=tcp://http://xxx.xxx.xxx.xxx:2375 ,注意此处不能像 docker-maven-plugin 在pom文件中指定<dockerHost>http://120.48.20.139:2375</dockerHost> 因为没这个参数
1 DOCKER_HOST=tcp://<host>:2375
Docker开启远程访问 低版本Docker
1 2 3 4 5 6 7 8 # 修改该Docker服务文件 vi /lib/systemd/system/docker.service # 修改ExecStart这行 将文件内的 ExecStart注释。 新增如下行。 集在ExecStart行最后增加,-H tcp://0.0.0.0:2375 开放远程主机访问权限。 # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
高版本Docker
[root@microservice ~]# vim /usr/lib/systemd/system/docker.service 在ExecStart=/usr/bin/dockerd-current 后面加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
1. 示例构建镜像 引入dockerfile-maven依赖 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 <properties > <docker.image.prefix > registry.cn-beijing.aliyuncs.com/zzxxxy</docker.image.prefix > </properties > <plugin > <groupId > com.spotify</groupId > <artifactId > dockerfile-maven-plugin</artifactId > <version > 1.3.6</version > <executions > <execution > <id > default</id > <goals > <goal > build</goal > </goals > </execution > </executions > <configuration > <repository > ${docker.image.prefix}/${project.artifactId}</repository > <tag > ${project.version}</tag > <buildArgs > <JAR_FILE > ${project.build.finalName}.jar</JAR_FILE > </buildArgs > </configuration > </plugin >
注解:
execution指定了该插件build目标使用默认绑定。默认的,build和tag目标绑定到package阶段,push目标绑定到deploy阶段,这里不涉及tag和push目标。
repository是生成的镜像的repository信息
tag元素指定镜像的tag,这里使用Maven模块的版本号;
buildArgs元素指定了传递给Dockerfile的参数,比如上面Dockerfile中的JAR_FILE.
${project.build.finalName}.jar是jar包路径,这里使用了最终生成的jar包的文件名
执行构建命令:mvn -DskipTests=true clean package我们可以看到插件的执行过程也就是build镜像的过程
准备DockerFile 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 FROM openjdk:8 -jdk-alpineRUN mkdir -p /data/config /data/logs ARG JAR_FILEADD target/${JAR_FILE} /app.jar WORKDIR /data/ EXPOSE 8111 ENTRYPOINT ["java" ,"-jar" ,"/app.jar" ,"> /data/logs/yida_sync.log 2>&1 &" ]
2. 执行命令 跳过插件目标:
如果要临时跳过所有的Dockerfile相关的目标,执行如下Maven命令:
1 mvn clean install -Ddockerfile.skip
如果只是想跳过某一个goal,执行如下Maven命令:
1 2 3 4 5 mvn clean package -Ddockerfile.build.skip mvn clean package -Ddockerfile.tag.skip mvn clean deploy -Ddockerfile.push.skip
3. 绑定Docker 命令到 Maven 各个阶段 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <plugin > <groupId > com.spotify</groupId > <artifactId > dockerfile-maven-plugin</artifactId > <version > 1.3.6</version > <executions > <execution > <id > dockerfile-build</id > <phase > package</phase > <goals > <goal > build</goal > <goal > push</goal > </goals > </execution > </executions > <configuration > <repository > ${docker.image.prefix}/${project.artifactId}</repository > <tag > ${project.version}</tag > <useMavenSettingsForAuth > true</useMavenSettingsForAuth > <buildArgs > <JAR_FILE > ${project.build.finalName}.jar</JAR_FILE > </buildArgs > </configuration > </plugin >
可用于此插件的Goals :
Goal
Description
Default Phase
dockerfile:build
从Dockerfile构建Docker镜像。
package
dockerfile:tag
Tag Docker镜像。
package
dockerfile:push
将Docker镜像推送到repository。
deploy
跳过Docker Goals 绑定到Maven phase
你可以将选项传递给maven以禁用 docker goals。
Maven Option
What Does that thing Do?
dockerfile.skip
Disables the entire dockerfile plugin; all goals become no-ops.
dockerfile.build.skip
Disables the build goal; it becomes a no-op.
dockerfile.tag.skip
Disables the tag goal; it becomes a no-op.
dockerfile.push.skip
Disables the push goal; it becomes a no-op.
例如,跳过整个dockerfile插件:
1 mvn clean package -Ddockerfile.skip
4. 使用私有 Docker 仓库地址以及安全认证配置 使用maven settings.xml进行身份验证 从版本1.3.6开始,你可以使用maven的 settings.xml文件进行身份验证,而不是使用docker配置。 只需添加类似于以下配置:
1 2 3 4 5 <configuration > <repository > registry.cn-beijing.aliyuncs.com/zzxxxy/yida-sync</repository > <tag > latest</tag > <useMavenSettingsForAuth > true</useMavenSettingsForAuth > </configuration >
你也可以在命令行上使用 -Ddockerfile.useMavenSettingsForAuth=true。
然后,在你的maven设置文件中,为服务器 添加配置:
1 2 3 4 5 6 7 8 <servers > <server > <id > registry.cn-beijing.aliyuncs.com</id > <username > me</username > <password > mypassword</password > </server > </servers >
使用maven pom.xml进行身份验证 从版本1.3.XX开始,你可以使用pom本身的配置进行身份验证。 只需添加类似于以下配置(经测试,在1.4.0版本中向私有仓库push时会报错 denied: requested access to the resource is denied,所以建议使用maven settings.xml进行身份验证):
1 2 3 4 5 6 7 8 9 10 11 12 13 <plugin > <groupId > com.spotify</groupId > <artifactId > dockerfile-maven-plugin</artifactId > <version > ${version}</version > <configuration > <username > repoUserName</username > <password > repoPassword</password > <repository > ${docker.image.prefix}/${project.artifactId}</repository > <buildArgs > <JAR_FILE > target/${project.build.finalName}.jar</JAR_FILE > </buildArgs > </configuration > </plugin >
或更简单,
1 2 3 4 5 6 7 8 9 10 11 <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${version}</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin>
用这个命令行调用:
1 mvn clean package -U -DskipTests=true -Pdocker -Ddockerfile.username=xx_devops -Ddockerfile.password=xxxxxxx
shell自动发布 我个人不喜欢MVN和DOCKER集成,感觉直接写个shell更简单
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 # !/bin/bash mirror_name="yida" mirror_version="latest" aliyun_username="username" aliyun_password="password" # 第一个参数为 "current" 按当天名成 if [ "$1" == "current" ];then mirror_version=`date +%F-%H` fi # 运行命令生成我们的项目镜像 docker build -f Dockerfile -t yida-sync:$mirror_version . echo "镜像构建成功" docker login --username=${aliyun_username} -p=${aliyun_password} registry.cn-beijing.aliyuncs.com echo "成功登录阿里云" docker tag yida-sync:$mirror_version registry.cn-beijing.aliyuncs.com/aws-images/$mirror_name:$mirror_version docker push registry.cn-beijing.aliyuncs.com/aws-images/$mirror_name:$mirror_version echo "镜像上传至阿里云成功"
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 FROM openjdk:8 -jdk-alpineRUN mkdir -p /data/config /data/logs COPY target/yida-sync-0.0.1-SNAPSHOT.jar /app.jar WORKDIR /data/ EXPOSE 8111 ENTRYPOINT ["java" ,"-jar" ,"/app.jar" ,"> /data/logs/yida_sync.log 2>&1 &" ]
idea集成docker实现镜像打包一键部署 如果不用IDEA一键部署需要如下:
1.在IDEA工具中开发代码
2.代码打成jar包
3.部署到Linux服务器
4.如果用Docker(编写Dockerfile文件)
5.构建镜像
6.运行镜像
1、Docker开启远程访问 低版本Docker
1 2 3 4 5 6 7 # 修改该Docker服务文件 vi /lib/systemd/system/docker.service # 修改ExecStart这行 将文件内的 ExecStart注释。 新增如下行。 集在ExecStart行最后增加,-H tcp://0.0.0.0:2375 开放远程主机访问权限。 # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
高版本Docker
1 2 [root@microservice ~]# vim /usr/lib/systemd/system/docker.service 在ExecStart=/usr/bin/dockerd-current 后面加上-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \
1 2 3 4 5 6 7 8 9 10 11 12 重新加载配置文件和启动: systemctl daemon-reload systemctl start docker # 查看端口是否开启 netstat -nlpt # 如果找不到netstat命令,可进行安装。 yum install net-tools # 直接curl看是否生效 curl http://127.0.0.1:2375/info
2、IDEA安装Docker插件 打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面, 在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。 安装后重启Idea。 (2018版本之后应该全部自带Docker)
3、IDEA配置docker 配置docker,连接到远程docker服务。
从File->Settings->Build,Execution,Deployment->Docker打开配置界面
连接成功后,在IDEA工具中即可 操作Docker:
4、docker-maven-plugin 可以通过docker-maven-plugin 或者 dockerfile-maven-plugin 上面已经讲了
5、IDEA 操作Docker 创建容器,找到刚刚生成的镜像,点击创建容器
测试
总结:
1 2 3 4 5 6 7 8 当我们执行 mvn package 时,执行 build、tag 操作 当执行 mvn deploy 时,执行build、tag、push 操作。 如果我们想跳过 docker 某个过程时,只需要: -DskipDockerBuild 跳过 build 镜像 -DskipDockerTag 跳过 tag 镜像 -DskipDockerPush 跳过 push 镜像 -DskipDocker 跳过整个阶段 例如:我们想执行 package 时,跳过 tag 过程,那么就需要 mvn package -DskipDockerTag