3.6 使用Dockerfile构建Docker镜像
下面我们以microservice-discovery-eureka项目为例,我们首先执行
mvn clean package # 使用Maven打包项目
将项目构建成jar包:microservice-discovery-eureka-0.0.1-SNAPSHOT.jar
,那么如果我们想要启动项目则只需要在microservice-discovery-eureka-0.0.1-SNAPSHOT.jar
所在的目录(即项目的target目录)执行:
java -jar microservice-discovery-eureka-0.0.1-SNAPSHOT.jar
那么如果我们现在想要将项目在Docker容器中运行,需要怎么做呢?
使用Dockerfile构建Docker镜像
- 在
microservice-discovery-eureka-0.0.1-SNAPSHOT.jar
所在目录(默认即:项目构建后的target目录,当然也可以将jar文件拷贝到其他任意路径),创建文件,命名为Dockerfile
# 基于哪个镜像
FROM java:8
# 将本地文件夹挂载到当前容器
VOLUME /tmp
# 拷贝文件到容器,也可以直接写成ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar /app.jar
ADD microservice-discovery-eureka-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
# 开放8761端口
EXPOSE 8761
# 配置容器启动后执行的命令
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- 构建docker镜像,执行:
docker build -t eacdy/test1 . # 格式:docker build -t 标签名称 Dockerfile的相对位置
构建成功:Successfully built a7cc6f4de088
。
- 启动镜像
docker run -p 8761:8761 eacdy/test1
- 访问
http://Docker宿主机IP:8761
,我们会发现Eureka能够正常被访问。
参考文档
基于Dockerfile搭建JAVA Tomcat运行环境:http://www.blogjava.net/yongboy/archive/2013/12/16/407643.html
Docker实现增量发布之前期准备:http://blog.csdn.net/zssureqh/article/details/52009043
Dockerfile详解:http://blog.csdn.net/wsscy2004/article/details/25878223
Dockerfile RUN/CMD/ENTRYPOINT命令详解:@126/blog/static/163877040201410411715832/"">http://blog.163.com/digoal@126/blog/static/163877040201410411715832/
如何使用Dockerfile构建镜像:http://blog.csdn.net/qinyushuang/article/details/43342553