网站开始开发阶段的主要流程,上海seo外包,广州公共资源,天猫alexa的排名#x1f4dd;个人主页#xff1a;五敷有你 #x1f525;系列专栏#xff1a;中间件
⛺️稳中求进#xff0c;晒太阳 1.Dockerfile自定义镜像
常见的镜像在DockerHub就能找到#xff0c;但是我们自己写的项目就必须自己构建镜像了。
而要自定义镜像#xff0c;就… 个人主页五敷有你 系列专栏中间件
⛺️稳中求进晒太阳 1.Dockerfile自定义镜像
常见的镜像在DockerHub就能找到但是我们自己写的项目就必须自己构建镜像了。
而要自定义镜像就必须先了解镜像的结构才行。
1.1.镜像结构
镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
我们以MySQL为例来看看镜像的组成结构 简单来说镜像就是在系统函数库、运行环境基础上添加应用程序文件、配置文件、依赖文件等组合然后编写好启动脚本打包在一起形成的文件。 我们要构建镜像其实就是实现上述打包的过程。 1.2.Dockerfile语法
构建自定义的镜像时并不需要一个个文件去拷贝打包。
我们只需要告诉Docker我们的镜像的组成需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么将来Docker会帮助我们构建镜像。 而描述上述信息的文件就是Dockerfile文件。 Dockerfile就是一个文本文件其中包含一个个的指令(Instruction)用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。 更新详细语法说明请参考官网文档 Dockerfile reference | Docker Docs 1.3.构建Java项目
1.3.1.基于Ubuntu构建Java项目
需求基于Ubuntu镜像构建一个新镜像运行一个java项目 步骤1新建一个空文件夹docker-demo 步骤2拷贝docker-demo.jar文件到docker-demo这个目录 步骤3拷贝jdk8.tar.gz文件到docker-demo这个目录 步骤4拷贝Dockerfile到docker-demo这个目录 其中的内容如下 # 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量JDK的安装目录
ENV JAVA_DIR/usr/local
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 安装JDK
RUN cd $JAVA_DIR \ tar -xf ./jdk8.tar.gz \ mv ./jdk1.8.0_144 ./java8
# 配置环境变量
ENV JAVA_HOME$JAVA_DIR/java8
ENV PATH$PATH:$JAVA_HOME/bin
# 暴露端口
EXPOSE 8090
# 入口java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar 步骤5进入docker-demo 将准备好的docker-demo上传到虚拟机任意目录然后进入docker-demo目录下 步骤6运行命令 docker build -t javaweb:1.0 .
最后访问 http://192.168.150.101:8090/hello/count其中的ip改成你的虚拟机ip
1.3.2.基于java8构建Java项目
虽然我们可以基于Ubuntu基础镜像添加任意自己需要的安装包构建镜像但是却比较麻烦。所以大多数情况下我们都可以在一些安装了部分软件的基础镜像上做改造。
例如构建java项目的镜像可以在已经准备了JDK的基础镜像基础上构建。
需求基于java:8-alpine镜像将一个Java项目构建为镜像
实现思路如下 ① 新建一个空的目录然后在目录中新建一个文件命名为Dockerfile ② 拷贝课前资料提供的docker-demo.jar到这个目录中 ③ 编写Dockerfile文件 a 基于java:8-alpine作为基础镜像 b 将app.jar拷贝到镜像中 c 暴露端口 d 编写入口ENTRYPOINT 内容如下 FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar ④ 使用docker build命令构建镜像 ⑤ 使用docker run创建容器并运行 1.4.小结
小结 Dockerfile的本质是一个文件通过指令描述镜像的构建过程 Dockerfile的第一行必须是FROM从一个基础镜像来构建 基础镜像可以是基本操作系统如Ubuntu。也可以是其他人制作好的镜像例如java:8-alpine