微服务框架 SpringCloud微服务架构 11 自定义镜像 11.2 Dockerfile
创始人
2024-03-17 11:05:15
0

微服务框架

【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-alpineCOPY ./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 总结
  1. Dockerfile的本质是一个文件,通过指令描述镜像的构建过程

  2. Dockerfile的第一行必须是FROM,从一个基础镜像来构建

  3. 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

相关内容

热门资讯

汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...