准备一个简单的多服务应用
在这一步中,我们将准备一个简单的多服务应用,用于在本实验中练习 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
服务都在运行的输出。