Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具;
docker-compose.yml 文件则是 Docker Compose 用来配置应用服务的核心文件,它以 YAML 格式编写。
YAML 文件用途:
- 服务定义:在 docker-compose.yml 文件中,可以定义应用程序的各个服务(service)。每个服务代表一个容器化的组件,比如 Web 服务器、数据库、缓存等。通过这种方式,可以将一个复杂的应用拆分成多个独立的服务,方便管理和部署。
- 依赖管理:可以明确指定服务之间的依赖关系,确保在启动某个服务之前,其依赖的服务已经正确启动。例如,Web 应用服务可能依赖于数据库服务,那么可以在配置中指定这种依赖,保证数据库先启动。
- 资源配置:能够为每个服务配置资源,如 CPU、内存限制,端口映射,文件或目录的挂载映射,环境变量等,使服务在不同环境中都能稳定运行。
知识点:
Docker 中,挂载(Mounting)是一种将文件或目录从宿主机挂载到容器中的技术。这样做可以让容器访问宿主机上的文件和目录,或者反过来,让宿主机访问容器内的文件和目录。挂载通常用于持久化数据、共享配置文件、访问外部资源等场景。
挂载文件的同步方向是怎样的?
当使用挂载功能时,Docker 会在容器启动时将宿主机指定的目录或文件挂载到容器内的指定位置。在容器运行过程中,无论是宿主机上的文件发生变化,还是容器内对挂载的文件进行修改,这些更改都会立即反映到对方。
例如:
redis:
image: redis:5.0.0
container_name: redis
hostname: redis
restart: always
ports:
- 6379:6379
volumes:
- /data/docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /data/docker/redis/data:/data
command:
redis-server /usr/local/etc/redis/redis.conf
service123:
image: xxxx
container_name: xxxxh
restart: always
ports:
- 5000:5001
volumes:
- /data/docker/service:/work/app1
env_file:
- /data/docker/files/env_file
environment:
- TZ=Asia/Shanghai
- JAVA_OPS=-Xmx512M -Xms512M
depends_on:
- redis
- mysql
关键解释:
- depends_on:指定服务之间的依赖关系,确保在启动当前服务之前,依赖的服务已经启动。
- Environment:设置容器运行时的环境变量,可以是一个键值对列表。
- env_file:指定一个或多个包含环境变量的文件。
常用命令:
- docker-compose up:前台启动所有定义的服务。
- docker-compose up -d: 该命令会以后台模式启动所有服务容器。
- docker-compose down:停止并移除所有由 docker-compose up 启动的容器。
- docker-compose ps:查看当前由 Docker Compose 管理的容器的状态。