idea骚操作系列(1) 连接远程docker


记录idea连接远程docker发布应用镜像到docker服务器、发布应用镜像到私有仓库及直接运行应用容器3个场景

与本文相关代码的github地址

安装docker并配置启用远程连接

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. 此场景只要添加个启动运行配置就可以了

添加启动配置

docker应用启动配置模板

启动应用

从idea又上角的下拉框里选择配置好的应用,然后启动

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值