0x001 准备工作
阿里云Ubuntu16.04
Docker version 19.03.3, build a872fc2
IntelliJ IDEA 2019.3.1 x64
0x002 配置Docker,开启远程
-
开启
docker
远程访问端口(可任意,默认2375
),为了安全起见我们开启4243
端口# vim /lib/systemd/system/docker.service
在
ExecStart
后面追加-H tcp://0.0.0.0:4243
,如图: -
重新加载配置文件,重启
docker
systemctl daemon-reload systemctl start docker
-
检查是否开启
# curl http://127.0.0.1:4243/info
有返回说明开启成功:
-
配置阿里云安全组规则,设置防火墙允许
4243
端口# ufw allow 4243
0x003 项目配置
-
idea
连接docker
,连接成功左下方显示Connection successful
-
在
Springboot
项目中添加docker-maven-plugin
插件<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.0.0</version> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--将插件绑定在package这个phase上。也就是说,用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名--> <imageName>nullok/${project.artifactId}</imageName> <!--指定标签--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!-- 指定 Dockerfile 路径--> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!--指定远程 docker api地址--> <dockerHost>http://xxxxxxx:4243</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路径 此处配置的 即对应 target 目录--> <directory>${project.build.directory}</directory> <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
-
创建docker文件夹和
Dockerfile
文件,Dockerfile
文件位置就是${project.basedir}/src/main/docker指定的位置Dockerfile
文件内容FROM java:8u111 # 选择jdk VOLUME /tmp ADD target目录下打包生成的jar包的名字.jar app.jar RUN bash -c 'touch /app.jar' EXPOSE 8080 # server.port ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
-
在idea的右边找到
Maven Projects
,找到Lifecycle
,双击package
打包打包成功之后会在
images
中看到在配置文件中指定的镜像名 -
创建容器,选中刚生成的镜像,右键点击
create container
如下配置:
-
运行成功,会看到如下界面,在左侧
containers
中会出现自己创建的容器而右侧就是我们熟悉的界面了。
-