首页 > 其他分享 >Docker使用docker-compose.yml文件(六)

Docker使用docker-compose.yml文件(六)

时间:2024-03-07 17:47:58浏览次数:25  
标签:web compose 容器 db yml docker Docker

前言

  前面介绍的都是单个容器部署,对于多容器部署也是一个个部署。这里Docker开发了docker-compose.yml。它是一个YAML格式的文件,用于定义和运行多容器的Docker应用程序。它允许你使用单个命令来启动、停止和重启应用程序,以及管理应用程序依赖的服务。

一、配置yml文件

version: '3'  # 版本不同,件格式特性不一样
services:  # 应用程序中需要运行的服务
  web:  # 服务名称
    build: .  # 构建当前目录下的Dockerfile文件
    ports:    # 端口映射
      - "5000:5000" 
    environment:   # 环境变量
      - DEBUG=1  
    volumes:  # 当前目录挂载到容器/app目录
      - .:/app  
    networks:  # 指定网络
      - front-tier  
    depends_on:  # web服务依赖于db服务,启动顺序是db->web
      - db  
  db:  # 服务名称
    image: postgres  # postgres数据库镜像
    environment:  # 这里设置postgres数据库账号密码
      - POSTGRES_USER=myuser  
      - POSTGRES_PASSWORD=mypassword  
    volumes: # 挂载db-data到容器data目录下
      - db-data:/var/lib/postgresql/data  
    networks:  # 指定网络
      - back-tier  
  
volumes:  # 创建卷
  db-data:  
  
networks:  # 创建网络
  front-tier:  
  back-tier:

 

二、执行docker-compose.yml文件

  以JavaWeb项目为例,配置dockerfile文件,里面是web项目。再以mysql数据库为例作为依赖项。

# 使用包含Java的官方基础镜像
FROM openjdk:8u131-jdk-alpine

# 设置时区
ENV TZ=Asia/Shanghai

# 设置工作目录
WORKDIR /jar

# 将JAR文件从当前目录复制到容器的/jar目录下
COPY ./web/target/web-0.0.1.jar ./web.jar

# 暴露应用程序运行的端口,假设你的应用监听在8085端口
EXPOSE 8085

# 启动JAR包
ENTRYPOINT ["java", "-jar", "web.jar"]

  配置docker-compose.yml文件

version: '3'
services:
  web:
    build: .
    ports:
      - "8085:8085"
    networks:
      - web-db-tier
    depends_on:
      - db
  db:
    image: mysql:8
    environment:
      - MYSQL_ROOT_PASSWORD=123456
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - web-db-tier

volumes:
  db-data:

networks:
  web-db-tier:

  查看是否创建成功,然后查看network、volume等信息是否符合。

~]# docker compose ls # 查看compose是否成功执行
~]# docker compose ps # 查看两个容器在运行
~]# docker volume ls # 查看卷是否创建
~]# docker network ls # 查看网络是否创建
~]# docker inspect  baby-db-1 # 查看容器信息,是否volume、network是否配置成功

   基本上信息都对上了,后面就是基本操作命令。这里的db是yml配置名,而不是控制台中的baby-db-1名称,若要使用控制台显示的名称,需要使用docker stop等命令。

~]# docker compose down#停止并删除yml包含容器
~]# docker compose start db# 开始服务
~]# docker compose stop db# 停止服务或者 docker stop baby-db-1
~]# docker compose restart db# 重启服务

  若使用docker compose down则会删除yml配置文件内的所有容器,并删除network网络,不过会保留volume卷。

 

  以上就是docker-compose.yml文件的基本使用,介绍了多容器统一管理配置,以及依赖顺序创建启动。

  如果需要更加深入了解特殊配置,可以去官网查看最新版本的配置,这里使用version:3版本,后续官方可能会更新版本,并提供其他新特征。

标签:web,compose,容器,db,yml,docker,Docker
From: https://www.cnblogs.com/zrl66/p/18058623

相关文章

  • docker部署监控Prometheus+Grafana
    目录一、Prometheus简介二、Prometheus基本原理三、Prometheus架构图四、Prometheus特性五、Prometheus组件六、Prometheus服务发现七、部署环境八、部署主机九、部署Prometheus1、安装docker2、启动docker并设置开机自启3、下载镜像包4、创建prometheus挂载目录5、创建prometheus......
  • ARM平台实现Docker容器技术
    什么是Docker?(1)Docker的架构 Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,亦可实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。使用Docker,可像管理应用程序一样管理基础结构......
  • docker-compose部署单机clickhouse
    【转载:https://www.cnblogs.com/crow1840/p/17506884.html】1、创建clickhouse目录[root@localhostdocker]#lsgitlab_dockerjenkins_dockermysql_docker[root@localhostdocker]#mkdirclickhouse/conf-p2.创建docker-compose.yml[root@localhostclickhouse]#cat......
  • 在Docker中,如何清理后台停止的容器?
    在Docker中,清理后台停止的容器可以通过多种方式完成。以下是一些常用的方法:1.手动删除你可以使用dockerps-a命令查看所有的容器,包括已停止的容器。找到你想要删除的容器的ID或名称。然后,使用dockerrm<container_id_or_name>命令来删除它。例如:dockerps-a#列出所有容......
  • 在Docker中,如何退出一个镜像的bash,而不终止它?
    在Docker中,当你使用dockerexec-it<container_id_or_name>bash命令进入一个正在运行的容器的bashshell时,你实际上是启动了一个新的进程。要退出这个bashshell而不终止容器,你可以使用几种不同的方法。1.使用exit命令在bashshell中,你可以简单地输入exit命令来退出。这将终......
  • 在Docker中,如何查看镜像支持的环境变量?
    在Docker中,要查看镜像支持的环境变量,有几种方法可以采用:使用Dockerfile:查看Docker镜像的环境变量最直接的方式是查看构建该镜像的Dockerfile。Dockerfile中的ENV指令用于设置环境变量,这些变量在构建镜像时会被创建并保存在镜像中。因此,通过检查Dockerfile,你可以找到所有通过E......
  • Nextcloud 基于 Docker 部署
    1、Docker、Docker-Compose安装https://www.cnblogs.com/a120608yby/p/9883175.htmlhttps://www.cnblogs.com/a120608yby/p/14582853.html2、基于Docker-Compose部署nextcloud#vimdocker-compose.ymlversion:'3'services:db:image:mariadb:10.6......
  • CentOS7 解决宝塔面板安装 Docker 和 Docker-compose 的问题
    在宝塔面板的软件商店安装Docker管理器时提示需手动安装Docker,再在面板中开启Docker插件进行可视化管理但是我手动安装Docker后依旧提示当前未安装Docker或Docker-compose,即宝塔面板的Docker管理插件仍无法识别到这些安装,在此记录下我的解决过程,如有错误,欢迎指正!1......
  • docker镜像
    1.base镜像base镜像有两层含义:(1)不依赖其他镜像,从scratch构建(2)其他镜像可以以之为基础进行扩展。所以,能称作base镜像的通常都是各种Linux发行版的Docker镜像,比如Ubuntu、Debian、CentOS等。dockerpullubuntuUbuntu镜像只有78M左右,下边解释为什么会这么......
  • Docker使用Dockerfile文件(五)
    前言Dockerfile是一个文本文件,其中包含了创建Docker镜像所需的所有指令。这意味着任何人都可以通过运行dockerbuild命令并使用相同的Dockerfile来创建完全相同的镜像。这确保了镜像创建的可重复性,使得在不同的环境中部署应用程序变得更加容易。Dockerfile提供了丰......