当前位置: 首页 > news >正文

瀑布流响应式网站模板食品 网站源码

瀑布流响应式网站模板,食品 网站源码,oa信息管理系统,宁波seo项目部署Dockerfile构建镜像DockerCompose基本语法基础命令项目部署 前面我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢? …省略一万字 站在巨人的肩膀上更适合我们普通人,所以直接介绍两种简单…

  • 项目部署
    • Dockerfile
      • 构建镜像
    • DockerCompose
      • 基本语法
      • 基础命令

项目部署

前面我们一直在使用别人准备好的镜像,那如果我要部署一个Java项目,把它打包为一个镜像该怎么做呢?

…省略一万字
站在巨人的肩膀上更适合我们普通人,所以直接介绍两种简单方法来构建项目部署


Dockerfile

制作镜像的过程中,需要逐层处理和打包,比较复杂,所以Docker就提供了自动打包镜像的功能。我们只需要将打包的过程,每一层要做的事情用固定的语法写下来,交给Docker去执行即可。
而这种记录镜像结构的文件就称为Dockerfile,其对应的语法可以参考官方文档:
https://docs.docker.com/engine/reference/builder/

指令说明示例
FROM指定基础镜像FROM centos:6
ENV设置环境变量,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY ./xx.jar /tmp/app.jar
RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install gcc
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar

例如,要基于Ubuntu镜像来构建一个Java应用,其Dockerfile内容如下:

# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录、容器内时区
ENV JAVA_DIR=/usr/local
ENV TZ=Asia/Shanghai
# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# 设定时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 安装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 8080
# 入口,java项目的启动命令
ENTRYPOINT ["java", "-jar", "/app.jar"]

思考一下:以后我们会有很多很多java项目需要打包为镜像,他们都需要Linux系统环境、JDK环境这两层,只有上面的3层不同(因为jar包不同)。如果每次制作java镜像都重复制作前两层镜像,是不是很麻烦。

于是又有前人给我整理好了通用的基础模板供我们使用, 以此省去JDK的配置

# 基础镜像
FROM openjdk:11.0-jre-buster
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY docker-demo.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

构建镜像

当Dockerfile文件写好以后,就可以利用命令来构建镜像了。

在这里插入图片描述
首先,我们将自己的docker-demo.jar包以及Dockerfile拷贝到虚拟机的/root/demo目录,然后,执行命令,构建镜像:

# 进入镜像目录
cd /root/demo
# 开始构建
docker build -t docker-demo:1.0 .

命令说明:

  • docker build : 就是构建一个docker镜像
  • -t docker-demo:1.0 :-t参数是指定镜像的名称(repository和tag)
  • . : 最后的点是指构建时Dockerfile所在路径,由于我们进入了demo目录,所以指定的是.代表当前目录,也可以直接指定Dockerfile目录:
    或者
# 直接指定Dockerfile目录
docker build -t docker-demo:1.0 /root/demo

这样就打包好了我们自己的镜像
然后配合别的镜像进行部署

DockerCompose

Docker Compose 是 Docker 官方提供的一个工具,用于定义和管理多个容器应用。它通过一个 YAML 配置文件(通常叫作 docker-compose.yml)来描述应用中所有容器的服务、网络、数据卷等。其中他也可以构建镜像

Docker Compose就可以帮助我们实现多个相互关联的Docker容器的快速部署。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器。

基本语法

docker-compose.yml文件的基本语法可以参考菜鸟教程

docker-compose文件中可以定义多个相互关联的应用容器,每一个应用容器被称为一个服务(service)。由于service就是在定义某个应用的运行时参数,因此与docker run参数非常相似。
在这里插入图片描述
非常相似

docker run 参数docker compose 指令说明
–namecontainer_name容器名称
-pports端口映射
-eenvironment环境变量
-vvolumes数据卷配置
–networknetworks网络
明白了其中的对应关系,相信编写docker-compose文件应该难不倒大家。

eg 黑马商城部署文件:

version: "3.8"services:mysql:image: mysqlcontainer_name: mysqlports:- "3306:3306"environment:TZ: Asia/ShanghaiMYSQL_ROOT_PASSWORD: 123volumes:- "./mysql/conf:/etc/mysql/conf.d"- "./mysql/data:/var/lib/mysql"- "./mysql/init:/docker-entrypoint-initdb.d"networks:- hm-nethmall:build: context: .dockerfile: Dockerfilecontainer_name: hmallports:- "8080:8080"networks:- hm-netdepends_on:- mysqlnginx:image: nginxcontainer_name: nginxports:- "18080:18080"- "18081:18081"volumes:- "./nginx/nginx.conf:/etc/nginx/nginx.conf"- "./nginx/html:/usr/share/nginx/html"depends_on:- hmallnetworks:- hm-net
networks:hm-net:name: hmall

基础命令

使用上面方法构建的项目需要使用下面的命令来操作

基本语法如下:
docker compose [OPTIONS] [COMMAND]
用[] 框住表示 OPTIONS和COMMAND都是可选参数,比较常见的有:

在这里插入图片描述
教学演示:

# 1.进入root目录
cd /root# 2.删除旧容器
docker rm -f $(docker ps -qa)# 3.删除hmall镜像
docker rmi hmall# 4.清空MySQL数据
rm -rf mysql/data# 5.启动所有, -d 参数是后台启动
docker compose up -d
# 结果:
[+] Building 15.5s (8/8) FINISHED=> [internal] load build definition from Dockerfile                                    0.0s=> => transferring dockerfile: 358B                                                    0.0s=> [internal] load .dockerignore                                                       0.0s=> => transferring context: 2B                                                         0.0s=> [internal] load metadata for docker.io/library/openjdk:11.0-jre-buster             15.4s=> [1/3] FROM docker.io/library/openjdk:11.0-jre-buster@sha256:3546a17e6fb4ff4fa681c3  0.0s=> [internal] load build context                                                       0.0s=> => transferring context: 98B                                                        0.0s=> CACHED [2/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo   0.0s=> CACHED [3/3] COPY hm-service.jar /app.jar                                           0.0s=> exporting to image                                                                  0.0s=> => exporting layers                                                                 0.0s=> => writing image sha256:32eebee16acde22550232f2eb80c69d2ce813ed099640e4cfed2193f71  0.0s=> => naming to docker.io/library/root-hmall                                           0.0s
[+] Running 4/4✔ Network hmall    Created                                                             0.2s✔ Container mysql  Started                                                             0.5s✔ Container hmall  Started                                                             0.9s✔ Container nginx  Started                                                             1.5s# 6.查看镜像
docker compose images
# 结果
CONTAINER           REPOSITORY          TAG                 IMAGE ID            SIZE
hmall               root-hmall          latest              32eebee16acd        362MB
mysql               mysql               latest              3218b38490ce        516MB
nginx               nginx               latest              605c77e624dd        141MB# 7.查看容器
docker compose ps
# 结果
NAME                IMAGE               COMMAND                  SERVICE             CREATED             STATUS              PORTS
hmall               root-hmall          "java -jar /app.jar"     hmall               54 seconds ago      Up 52 seconds       0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
mysql               mysql               "docker-entrypoint.s…"   mysql               54 seconds ago      Up 53 seconds       0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp
nginx               nginx               "/docker-entrypoint.…"   nginx               54 seconds ago      Up 52 seconds       80/tcp, 0.0.0.0:18080-18081->18080-18081/tcp, :::18080-18081->18080-18081/tcp
http://www.dtcms.com/a/405143.html

相关文章:

  • 网站备案 多ipseo快速优化软件网站
  • 网易严选的网站建设长春做网站外包
  • 网站开发属于软件开发域名信息查询
  • 易班网站建设基础必须在当地网站备案
  • seo网站建设方案生成器在线制作免费
  • 深圳市网站制作公司品牌营销策划方案范文
  • 如何给网站添加cnzz如何申请邮箱免费注册
  • 网站设计建设免费网站服务
  • 网站建设需要用软件做网站的可行性分析
  • 我的世界皮肤网站做wordpress 跳转 代理
  • 大兴建站推广自己做的网站 怎么放大文件
  • 建网站一般需要多少钱摄影师作品网站有哪些
  • 在淘宝上做的网站要转出厦门百度seo
  • 网站定位仿58网站源码
  • 网站建设与管理总结餐饮网站制作
  • 网站流量分析报告网站建设提成方案
  • 网站样式有哪些风格微网站开发企业选择
  • 新手建站网址哪家公司网站做的比较好
  • 三明市建设局网站官网网站怎么优化关键词排名
  • 厦门站长优化工具宜宾微信网站建设
  • 人社局网站群建设工作方案做网站每年需付费吗
  • 网站手机访问跳转长春网站建设培训
  • 淘宝网站边上的导航栏怎么做国际知名设计公司名称
  • 建站网站数据搜索wordpress app生成
  • 深圳手机网站设计公司网络系统建设与运维高级
  • 网站建设暨检务公开自查报告重庆交通建设集团网站
  • 世界杯消息哪个门户网站做的好设计云网站建设
  • 网站转换率哪些软件不是网页制作软件
  • 网站有标题百度竞价点击工具
  • 做二手房的端口网站郑州淘宝网站推广 汉狮网络