• docker 构建docker-compose


    1、示例

    在项目目录下创建一个名为docker-compose.dev.yml的文件

    version: '3.8'
    
    services:
     flask:
      build:
       context: .
      image: flask_server:v1.0.0
      ports:
      - 8006:5000
      volumes:
      - ./:/app
      container_name: first_docker_flask
      restart: always
    
     mysql_server:
      image: mysql:5.7
      ports:
      - 3309:3306
      environment:
      - MYSQL_ROOT_PASSWORD=1234
      volumes:
      - mysql_test_data:/var/lib/mysql
      - mysql_test_config:/etc/mysql
      container_name: mysql_server
      restart: always
    
    volumes:
      mysql_test_data:
       name: 'my_mysql_test_data'
      mysql_test_config:
       name: 'my_mysql_test_config'
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    解释:
    version(版本顶级元素): compose的版本
    services(服务顶级元素): 其底下的一个键代表一个服务,值代表该服务对应的配置

    • build: 用于构建一个镜像,必须要有context。context含义:定义包含 Dockerfile 的目录的路径或 git 存储库的 url
    • ports: 指定主机端口和容器端口的映射关系
    • volums: 用于数据的持久化存储,本质上存在于宿主机上的硬盘上
      对于windows:存储位置在:\\wsl$\docker-desktop-data\data\docker\volumes
      对于linux:存储位置在:/var/lib/docker/volumes/
      容器有两种类型的卷:
      第一种: docker创建的volumn目录:容器的目录
      第二种: 宿主机的目录:容器的目录
      卷的意义就在于将指定容器内的某一目录持久化到卷中,这样即使删除容器,数据也不会丢失,并且可以跨容器访问
      注: docker-compose在第一次创建卷的时候,如果容器的目录内是有数据的,会复制到卷的目录。如果这个卷不被删除,再次创建容器并且使用这个卷的时候,会使用该卷的内容,而不会再根据容器的目录重新复制一份到卷的目录里
    • restart: 定义容器的终止策略。例如设置为always,代表每次重启docker的时候,始终都会重启该容器
    • container_name: 指定容器的名字
    • image: 指定容器的镜像,格式::[],如果没有build,就是拉取指定的版本的镜像,如果有build,就是构建为指定版本的镜像
    • enviroment: 定义容器中设置的环境变量,如果是拉取的镜像,应该参考docker hub上的该镜像对应的环境变量进行配置

    volumn(卷顶级元素): 卷是平台实现的持久数据存储

    • 卷名称
      • name: 为此卷设置自定义名称
        注: 这边设置自定义名称只是显示的名字。在compose文件中,服务顶级元素中配置的卷名称应该对于对应这里的卷名称,而不是自定义卷名称

    2、运行docker-compose,并在后台启动容器

    这一步包含的内容有:构建镜像或拉取镜像、基于镜像运行容器、创建卷等等

    docker-compose -f docker-compose.dev.yml up --build -d
    
    • 1
  • 相关阅读:
    google abseil c++ Tip of the Week #65: Putting Things in their Place 把对象放入容器的方式
    页表缓存(TLB)和巨型页的实现
    Android Binder——数据传输限制(二十三)
    Java web中,服务器运行不过来
    win10 安装.net framework 3.5,错误代码0x8024401C
    【Unity3D】初学加密技巧(反破解)
    JDK1.8新特性---新时间日期API
    88页《Redis学习文档》,从入门到精通,看这一篇就足够
    【算法】欧拉筛 输出任意范围内的质数
    【电商】电商后台设计—库存模块
  • 原文地址:https://blog.csdn.net/weixin_47513022/article/details/126391504