之前在公司都是自动打包部署到远程docker上,也没有考虑过怎么搞的,今天在公司内网docker 上测试,跟同事学习了下,记录一下分享,day day up !!!!!, 开始吧。
1、安装docker插件
这步我不记得有没有安装,因为我使用的是商业版,可以看下你是不是安装了
打开setting-->plugins-->搜索docker-->点击install
这个插件是可视化的管理docker
pom中增加下面的配置
<build>
<finalName>ccp-data-SNAPSHOT</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<mainClass>com.tyjt.ccpdata.CcpDataApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
2、docker 开启远程访问
因为要在远程管理docker,所以需要打开远程访问权限,
修改docker.service
配置地址: /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375
这里开启远程端口为2375
3、idea中配置docker 连接
想要管理远程的docker 的服务器,file->setting->build -> Docker ,增加一个配置,
name 随便起,最主要的是TCP 连接属性
填写完成之后会有提示连接成功,这个时候你已经可以管理远程的docker了
在控制台 service窗口可以看到远程的信息了
docker-compose 是docker-compose启动的服务
containers 是docker 上正在运行的服务
Images 是docker上有的机器
Networks 是每个服务的网络
Volumes 是每个服务的挂载
4、部署本地项目到docker
4.1 创建dockerfile
创建一个springboot项目,在项目中创建dockerfile
# 基础镜像
FROM tyjt-java11-agent:latest
# 默认工作空间
VOLUME /tmp
WORKDIR /opt/tyjt
# 复制为ccp-data-0.0.1-SNAPSHOT.jar
ADD target/ccp-data-SNAPSHOT.jar /opt/tyjt/ccp-data-SNAPSHOT.jar
ADD run.sh /opt/tyjt/run.sh
# RUN bash -c 'touch /ccp-data-SNAPSHOT.jar'
# 时钟
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#port
EXPOSE 10801
#执行
ENTRYPOINT ["bash","/opt/tyjt/run.sh"]
执行的脚本如下
#/bin/bash
PROFILE=$ENV
java -jar /opt/tyjt/ccp-data-SNAPSHOT.jar
4.2 创建docker 配置
通过edit-configration,添加一个docker的运行配置
点击modify 可以做端口映射,相当于docker run中的p命令
这里在运行之前做了一个maven的打包工作
clean package -U -DskipTests
4.3 运行起来看看效果
点击运行可以看到下面的日志,同时也能看到项目的启动日志
可以登录到docker 所在机器看下运行的容器
已经部署上去了
注意: 如果部署不上去,提示Failed to deploy,可能是因为权限不够,使用管理员权限打开idea
5、总结
这只是一个工具的使用,虽然很方便,但是在我们日常的开发中很少这么用,因为我们都是CI 一键部署,几乎不使用这种方式