准备一个简单的多服务应用
在这一步中,我们将准备一个简单的多服务应用,用于在本实验中练习 Docker 服务的重启操作。该应用包含两个服务:web 服务和数据库服务。我们将使用 Docker Compose 文件来定义这些服务。
首先需要安装 Docker Compose。由于 LabEx VM 环境中未预装该工具,我们需要下载并安装它。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
第一条命令从 GitHub 官方仓库下载 Docker Compose 二进制文件并保存到 /usr/local/bin/docker-compose。其中 $(uname -s) 和 $(uname -m) 会自动检测你的操作系统和架构以下载正确的二进制文件。第二条命令使下载的文件可执行。
现在通过检查 Docker Compose 版本来验证安装:
docker-compose --version
你应该能看到类似 Docker Compose version v2.20.2 的输出。
接下来进入 ~/project 目录,这是本实验的工作目录:
cd ~/project
现在我们将创建 docker-compose.yml 文件来定义多服务应用。该文件将指定服务、它们的镜像以及必要的配置。
nano docker-compose.yml
将以下内容粘贴到 docker-compose.yml 文件中:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
在这个 docker-compose.yml 文件中:
version: '3.8' 指定了 Docker Compose 文件格式版本
services: 定义了我们应用中的不同服务
web 服务使用 nginx:latest 镜像,将主机的 80 端口映射到容器的 80 端口,并依赖于 db 服务。这意味着 db 服务会先于 web 服务启动
db 服务使用 postgres:latest 镜像,并设置了 PostgreSQL 镜像必需的 POSTGRES_PASSWORD 环境变量
保存文件并退出 nano 编辑器(按 Ctrl + X,然后 Y,最后 Enter)。
在启动服务前,我们需要拉取必要的 Docker 镜像:
docker pull nginx:latest
docker pull postgres:latest
这些命令会从 Docker Hub 下载 nginx:latest 和 postgres:latest 镜像。
最后,启动 docker-compose.yml 文件中定义的服务:
docker-compose up -d
docker-compose up -d 命令会在后台(分离模式)构建、创建并启动服务。
你可以使用以下命令检查运行中服务的状态:
docker-compose ps
你应该能看到显示 web 和 db 服务都在运行的输出。