IDEA 打包docker镜像并且推送到服务器中

IDEA 打包docker镜像并且推送到服务器中

  • 一、Docker开启远程访问
    • 1.修改该Docker服务文件
    • 2.重新加载配置文件
    • 3.直接curl看是否生效
    • 4.附:docker操作相关命令
  • 二、Idea安装docker支持插件及配置
    • 1.在idea中下载docker插件
    • 2.配置docker
    • 3.配置连接服务器信息:
    • 4. 编写dockerfile
    • 5.运行项目
  • 总结

一、Docker开启远程访问

1.修改该Docker服务文件

vim /lib/systemd/system/docker.service

修改此行,开启2375端口,远程可访问docker
注意:仅限内网,外网不安全

#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

2.重新加载配置文件

systemctl daemon-reload // 1,加载docker守护线程
systemctl restart docker // 2,重启docker

3.直接curl看是否生效

curl http://127.0.0.1:2375/info

4.附:docker操作相关命令

systemctl命令是系统服务管理器指令,它是 service 和 chkconfig 两个命令组合。

#启动docker
systemctl start docker
#停止docker
systemctl stop docker
#重启docker
systemctl restart docker
#查看docker状态
systemctl status docker
#开机启动
systemctl enable docker

二、Idea安装docker支持插件及配置

1.在idea中下载docker插件

IDEA 打包docker镜像并且推送到服务器中_第1张图片

2.配置docker

Edit Configurations 添加Dockerfile
IDEA 打包docker镜像并且推送到服务器中_第2张图片
IDEA 打包docker镜像并且推送到服务器中_第3张图片

3.配置连接服务器信息:

注意: 只要下面提示Connection successfl 就表示连接成功了;
IDEA 打包docker镜像并且推送到服务器中_第4张图片

4. 编写dockerfile

##使用 JDK 8 环境为基础镜像,如果镜像不是本地的将会从 DockerHub 进行下载
FROM anapsix/alpine-java:8_server-jre_unlimited
#作者
MAINTAINER Sxq
#声明一个挂载点,容器内此路径会对应宿主机的某个文件夹
VOLUME /tmp
#复制上下文目录下的target/demo-0.0.1-SNAPSHOT.jar 到容器里
COPY target/companyProject.jar companyProject.jar

#bash方式执行,使demo-0.0.1-SNAPSHOT.jar可访问
#RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
RUN bash -c "touch /companyProject.jar"

#声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务
EXPOSE 8081

#指定容器启动程序及参数   <ENTRYPOINT> "<CMD>"
ENTRYPOINT ["java","-jar","companyProject.jar"]

dockerfile 放置到根目录下
IDEA 打包docker镜像并且推送到服务器中_第5张图片

补充知识点: EXPOSE 的用途

1、在Dockerfile中声明了那些端口是将要开放的。

2、在构建容器时通过 -P (大写的P)可以随机映射端口。(如果EXPOSE没有指定端口,那么使用 -P 参数无效)

准确来说 Dockerfile 中的 EXPOSE用处不大!原因:

1、真正的暴露端口是在创建容器 run 的时候指定的 -p 或者 -P 参数,先来说说 -p 参数后面跟的是【主机端口:容器端口】,那么问题就来了既然在运行的时候还需要指定端口那么 EXPOSE还要什么用呢!

2、当我们创建容器 run 的时候指定参数是 -P,那么在运行之后 会把 EXPOSE 的端口随机映射到主机的不同端口,这时问题又来了既然映射到不同的端口那么容器的端口就是是随机的不确定的,那就要在运行之后才能知道端口,这样使用起来是极其不便的。

本着存在即合理的想法来解释一下EXPOSE的真正用途:

EXPOSE可以不用但是不能没有,因为 Dockerfile 不一定是一个人维护的,或者说当下一个运维人员接手项目之后能够通过 Dockerfile 里面的参数掌握整体的逻辑,一切还是为了规范。

5.运行项目

IDEA 打包docker镜像并且推送到服务器中_第6张图片
log中可以看到jar启动的服务信息
IDEA 打包docker镜像并且推送到服务器中_第7张图片

接下来我看下我服务器的信息:
在这里插入图片描述
项目运行成功,通过8102端口访问

总结

以上就是今天要讲的内容,本文仅仅简单介绍了IDEA 打包docker镜像并且推送到服务器中的使用的其中一种方法!!!!

你可能感兴趣的:(docker,服务器,intellij-idea)