废话不多说,直接开干:
1、开放docker仓库访问地址;
#输入此命令设置docker.service的仓库访问端口,ExecStart项添加:-H tcp://0.0.0.0:2375
vim /usr/lib/systemd/system/docker.service
#保存退出后输入命令重新加载配置
systemctl daemon-reload
#重启docker
systemctl restart docker
#请记得输入一下命令关闭centos的系统防火墙,否则永远访问不了
systemctl stop firewalld.service
2、Idea中安装docker插件;
File=>Setting=>plugins=>搜索docker=》install(安装)
3、创建DockerFile;
在项目根目录下创建DockerFile
#DockerFile内容
#基础镜像,如果本地没有,会从远程仓库拉取。
FROM java:8
#维护者信息
MAINTAINER rock <1539773555@qq.com>
#工作目录
#WORKDIR /opt/docker/penguin-log-web/
#这里的 /tmp 目录就会在运行时自动挂载为匿名卷,任何向 /tmp 中写入的信息都不会记录进容器存储层,可以多个
VOLUME ["/tmp"]
#声明了容器应该打开的端口并没有实际上将它打开
EXPOSE 16060
#定义参数
#ARG JAR_FILE
## 将jar包添加到容器中并更名为app.jar
#ADD *.jar app.jar
#拷贝本地文件到镜像中#复制上下文目录下的target/demo-1.0.0.jar 到容器里
#COPY ${JAR_FILE} penguin-log-web.jar
#复制上下文目录下的target/demo-1.0.0.jar 到容器里
COPY target/yunxiao-web-api-0.0.1-SNAPSHOT.jar app.jar
#bash方式执行,使demo-1.0.0.jar可访问
#RUN新建立一层,在其上执行这些命令,执行结束后, commit 这一层的修改,构成新的镜像。
RUN bash -c "touch /app.jar"
#指定容器启动时要执行的命令,但如果存在CMD指令,CMD中的参数会被附加到ENTRYPOINT指令的后面
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
#设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone \
4、添加Maven插件支持打包docker镜像;
在pom.xml文件添加plugins节点配置打包docker镜像后推送的docker仓库地址:<dockerHost>http://192.168.1.209:2375</dockerHost>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version> 1.2.1</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>${project.artifactId}</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerDirectory>${project.basedir}</dockerDirectory>
<dockerHost>http://192.168.1.209:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}</include>
</resource>
</resources>
</configuration>
</plugin>
maven直接package打包则可以自动生成docker镜像并推送到配置的docker镜像仓库
可以在centos下输入命令:docker images 查看docker镜像是否上传成功
5、启动docker镜像测试;
#启动docker容器的命令
docker run -itd -p 16060:16060 --name testdemo yunxiao-web-api
#查看docker容器运行状态
docker ps
访问测试