版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
使用idea的Docker插件,远程build Dockerfile和自动运行容器
第一步:启动Docker远程服务
Docker默认情况下本机使用docker命令操作镜像和容器,Docker还提供了 -H可以连接远程的Docker服务器进行远程镜像
和容器管理,项目中使用maven可以通过DockerFile远程连接并构建镜像 ,达到快速测试的目的
默认docker服务启动 文件(/usr/lib/systemd/system/docker.service)编辑文件
在ExecStart后面 添加一行(表示启动2375端口 用于监听远程操作)
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock \
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
重新加载服务
[java@aliyun /]# sudo systemctl daemon-reload
重启docker服务
[java@aliyun /]# sudo systemctl restart docker
确认是否已经打开2375端口:$sudo netstat -ntlp |grep docker
使用任意一台有Docker的机器上运行(以下 images是显示的就是远程100.100.100.233上的所有镜像)
[java@centos101 tmp]$ sudo docker -H 100.100.100.233 images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis 5.0.5 f7302e4ab3a8 3 weeks ago 98.2MB
mysql 8.0 62a9f311b99c 3 weeks ago 445MB
第二步:查看是否已经安装Docker插件
第三步:配置idea的远程Docker
第四步:编写Dockerfile,Dockerfile直接放在module目录下
# 基础镜像
FROM openjdk:8-jdk-alpine
# 作者信息
MAINTAINER "masterJ [email protected]"
# 添加一个存储空间
#通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点。
#还有一个区别是,通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。
# $docker inspect 容器id 可以看到"Mounts":[{..."Source": "/var/lib/docker/volumes/dae714b58b31b3070cf15a6b7db02456c74641d03d8acdfcf7b95040b948aed5/_data",...}]
VOLUME /tmp
# 暴露8080端口,这里暴露的也就是tomcat的端口
EXPOSE 8080
# 添加变量,如果使用dockerfile-maven-plugin,则会自动替换这里的变量内容
ARG JAR_FILE=/target/eladmin.jar
# 往容器中添加jar包
ADD ${JAR_FILE} app.jar
#ADD /target/eladmin.jar app.jar
# 启动镜像自动运行程序
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/urandom","-jar","/app.jar"]