第一步,配置Docker启用远程tcp端口,并重新启动
假设已经安装了Docker,编辑Docker启动服务脚本
[tobbco@localhost ~]$ sudo vim /usr/lib/systemd/system/docker.service
在ExecStart
配置末尾增加-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
,如下:
[tobbco@localhost ~]$ ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
重新加载配置
[tobbco@localhost ~]$ sudo systemctl daemon-reload
重新启动Docker
[tobbco@localhost ~]$ sudo systemctl restart docker
查看配置是否生效
[tobbco@localhost ~]$ ps -ef | grep docker
root 3682 1 0 11:10 ? 00:00:14 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375
出现刚刚的配置,证明生效,反之重新执行步骤。
第二步,IDEA Docker插件安装及配置
IDEA 安装Docker插件,Restart IDEA。
找到IDEA Settring设置项,搜索Docker,目录在Build,Execution,Deployment
下。
一般默认有一个Docker配置,没有点击+
号创建一个。
名称随便起,例如Docker-linux
。
选择TCP socket,Engine API URL:tcp://your remote server ip
:2375,我这里是连接的云服务器,本地的选择第一个Docker for Windows或Mac,取决于你的系统。
等待连接,出现Connection Successful,证明成功,如Time out,则多试几次。
第三部,构建Docker镜像并远程部署
Dockerfile文件内容
# 基础镜像
FROM openjdk:8-jre-slim
# 作者
LABEL authors="tobacco"
# 配置
ENV PARAMS=""
# 时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 添加应用
ADD /springboot-demo/target/springboot-demo.jar /springboot-demo.jar
# 执行
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /springboot-demo.jar $PARAMS"]
pom.xml配置Docker镜像构建插件
<plugin>
<groupId>com.spotifygroupId>
<artifactId>docker-maven-pluginartifactId>
<version>1.0.0version>
<executions>
<execution>
<id>build-imageid>
<phase>packagephase>
<goals>
<goal>buildgoal>
goals>
execution>
executions>
plugin>
Docker Configuration
打开Run/Debug Configurations,点击+
新建,搜索Dockerfile。
名称设置为springboot-demo便于明确构建的镜像是什么。
Server选择前面IDEA Docker插件配置的名称。
Build项中Dockerfile选择之前创建的Dockerfile,Image tag 给镜像设置标签,例如springboot-demo:1.0。
Run项中Container name:起一个容器运行的名称,最好与项目名称保持一致,便于区分,Bind ports:点击右侧文件夹配置宿主机端口和容器端口的映射,例如:8080:8080。
点击apply应用后,点击run,只要文件没有配置错,那么没有问题。
查看镜像构建及部署日志
回到IDEA Services视图栏(或者使用ALT+F8
调出)。
查看Docker-linux下有一个名称为springboot-demo的镜像,右侧有Build Log,构建镜像成功后,会自动发送到云服务器。
之后查看Build Log右侧的Log,为项目启动日志。