idea连接远程docker
记录idea连接远程docker发布应用镜像到docker服务器、发布应用镜像到私有仓库及直接运行应用容器3个场景
安装docker并配置启用远程连接
idea连接远程docker
配置docker连接,连接远程docker
- idea新建Docker Connection
idea菜单操作: 选择View - > Tool Windows -> Services(操作结果是任务栏会出现Services窗口)
idea任务栏操作: 选择Services窗口-> + -> Docker Connection (操作 结果是弹出docker配置界面) - 配置Docker Connection
Name : 随便写(我这里暂定Remote Docker)
Docker daemon -> TCP socket
Engine API URL: tcp:// 外 网 i p : {外网ip}: 外网ip:{docker开放的远程连接端口}
点击OK就可以在Services窗口看到远程主机上的docker信息了
场景1、2:发布应用镜像到远程服务器、私有仓库
执行过程:
- 本地打包生成可执行jar
- 使用远程docker服务构建镜像并上传到docker服务器上
- 给镜像打上标签推送到私仓
新建spring boot项目(略)
配置maven setting.xml
特别强调,并不是所有的仓库都要配置认证信息的,利用docker registry搭建的镜像仓库不需要认证,也就是不用配置认证信息
<servers>
<server>
<id>harbor</id>
<username>admin</username>
<password>Harbor12345</password>
</server>
</servers>
配置pom.xml文件(详细配置见源代码)
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<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.0.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<!-- 构建镜像到docker所在机器 -->
<goal>build</goal>
<!-- 推送镜像到私有仓库 -->
<goal>push</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- 对应maven settings中的配置 -->
<serverId>harbor</serverId>
<!-- 发布到服务器上:${project.artifactId}, 推送到私有仓库,一定要指定仓库172.17.0.9:9001/library/${project.artifactId},library是harbor默认仓库 -->
<imageName>${project.artifactId}</imageName>
<!--指定标签 默认 latest 发布的时候可以调整为发布版本号, 如 1.0-->
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<!-- 指定dockerHost -->
<dockerHost>http://${外网ip}:${端口}</dockerHost>
<!-- 指定 Dockerfile 路径-->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!--以下是为了docker push到DockerHub使用的,需要在maven配置文件里配置认证信息。-->
<!-- <registryUrl>https://index.docker.io/v1/</registryUrl>-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
配置dockerfile(配置文件在项目根目录下)
FROM mcr.microsoft.com/java/jdk:8u272-zulu-centos # jdk环境,最好是提前准备好
ENV JAVA_OPTIONS="" # 暴露jvm参数给命令行
ADD target/*.jar /app.jar # 运行jar包,ADD 后的jar路径与dockerfile文件路径有关,是相对dockerfile的路径
HEALTHCHECK --interval=60s --timeout=30s --start-period=60s --retries=3 CMD curl -f http://localhost/check/heart || exit 1 # 健康检查
CMD java $JAVA_OPTIONS -jar /app.jar # 主应用启动命令(把应用放到前台启动:pid=1)
发布应用镜像到远程服务器、私有仓库
mvn clean package
命令行方式启动容器
# 后面只发布不运行的话,需要在服务端执行下面命令启动容器
docker run -d -p 8889:8888 \
-e "JAVA_OPTIONS=-Xmx1024m -Djava.security.egd=file:/dev/./urandom" \ #配置jvm参数
-e "SPRING_PROFILES_ACTIVE=dev" \ # 配置spring应用环境
-v /data/logs/framework:/app/logs # 日志映射到宿主机
--name register register # 前一个register是容器名,后面那个是镜像名
场景3: 直接在本地运行应用容器
项目相关配置同场景1、2. 此场景只要添加个启动运行配置就可以了
添加启动配置
启动应用
从idea又上角的下拉框里选择配置好的应用,然后启动