微服务框架
【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】
SpringCloud微服务架构
文章目录
- 微服务框架
- SpringCloud微服务架构
- 11 自定义镜像
- 11.2 Dockerfile
- 11.2.1 什么是Dcokerfile
- 11.2.2 直接开干
- 11.2.3 直接使用基础镜像,加快构建
- 11.2.4 总结
11 自定义镜像
11.2 Dockerfile
11.2.1 什么是Dcokerfile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./mysql-5.7.rpm /tmp |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
Docker 官网文档:https://docs.docker.com/engine/reference/builder/
11.2.2 直接开干
基于Ubuntu镜像构建一个新镜像,运行一个java项目
步骤1:新建一个空文件夹docker-demo
mkdir docker-demo
步骤2:拷贝课前资料中的docker-demo.jar文件到docker-demo这个目录
直接拽进来
OK,这样三个都上来了
步骤3:拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录
步骤4:拷贝课前资料提供的Dockerfile到docker-demo这个目录
先看看Dockerfile
# 指定基础镜像
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
步骤6:运行构建命令:
空格之后有个点儿,一定记得,它代表Dockerfile 所在的目录,直接回车运行
可以看到,它在逐步执行Dockerfile 中的指令
OK,构建完成了,查看镜像
创建容器把它跑起来
docker run --name web -p 8090:8090 -d javaweb:1.0
开个端口
OK,本地访问测试
OK, 没毛病
每刷新一次,加一次
11.2.3 直接使用基础镜像,加快构建
基于java:8-alpine镜像,将一个Java项目构建为镜像
实现思路如下:
①新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile
②拷贝课前资料提供的docker-demo.jar到这个目录中
③编写Dockerfile文件:
- a)基于java:8-alpine作为基础镜像
- b)将app.jar拷贝到镜像中
- c)暴露端口
- d)编写入口ENTRYPOINT
④使用docker build命令构建镜像
⑤使用docker run创建容器并运行
修改一下Dockerfile
# 指定基础镜像
FROM java:8-alpine
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
覆盖服务器中的Dcokerfile
OK,覆盖成功
再次构建一个新的镜像
docker build -t javaweb:2.0 .
查看镜像
我giao ,注意大小
把之前那个干掉,把这个2.0 创建个容器跑起来
docker run --name web2.0 -p 8090:8090 -d javaweb:2.0
直接访问测试
没毛病!牛逼!【虽然笔者早知道了】
11.2.4 总结
-
Dockerfile的本质是一个文件,通过指令描述镜像的构建过程
-
Dockerfile的第一行必须是FROM,从一个基础镜像来构建
-
基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine