IDE使用技巧(三):打包项目推送到docker hub


前言

  • 案例地址
  • 镜像仓库

idea连接Linux上的docker

  • 参考
  • idea安装插件Docker integration
  • 登录到远程服务器,修改docker配置文件
# 修改docker服务文件
vi /lib/systemd/system/docker.service
 
# 将原来的ExecStart前面加上#号注释掉,然后再下面追加一行
# ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd    -H tcp://0.0.0.0:2375    -H unix:///var/run/docker.sock
 
# 重新加载配置
systemctl daemon-reload
 
# 重启docker服务
systemctl restart docker.service


创建镜像

  • 参考1

  • 参考2

  • 准备一个后端项目

  • pom.xml


    1.8
    chniny

 

    
        
            com.spotify
            docker-maven-plugin
            1.0.0
            
                ${docker.image.prefix}/${project.artifactId}
                
                
                    
                        /
                        ${project.build.directory}
                        ${project.build.finalName}.jar
                    
                
            
        
    


  • 根目录下创建Dockerfile
FROM java:8
VOLUME /tmp
COPY target/demo01-0.0.1-SNAPSHOT.jar resource.jar
RUN bash -c "touch /resource.jar"
EXPOSE 8080
ENTRYPOINT ["java","-jar","resource.jar"]

  • 配置dockerfile

  • Image tag中chniny表示作者,demo表示镜像名称,1.0表示版本

    clean package -U -DskipTests
  • 执行dockerfile

  • 也可以点这里执行dockerfile

  • 执行成功后,会在Linux服务器上生成镜像

  • 启动该镜像,指定端口映射为18080

docker run -d -p 18080:8080 --name docker-resource chniny/demo:1.0

  • 测试容器
# 该项目中写了一个测试接口:http://localhost:8080/test
# 当前容器的映射端口为18080,所在服务器ip为192.168.97.34
# 测试地址:http://192.168.97.34/18080/test

推送镜像

  • idea连接Linux后使用命令推送
# 登录docker hub
docker login

# 推送
docker push chniny/demo:1.0

  • 推送成功后,在docker hub上查看

  • 推送失败

# 推送失败,报错如下:
denied: requested access to the resource is denied

# 镜像的前缀必须与docker hub的用户名一致
# 解决方案:使用docker tag重新生成镜像,之后再次推送
docker tag 旧前缀/镜像名:版本号 chniny/demo:1.0