准备一个带构建上下文的简单 Docker Compose 项目
在本步骤中,我们将准备一个包含构建上下文的简单 Docker Compose 项目。构建上下文是指发送给 Docker 守护进程用于构建镜像的指定位置(PATH 或 URL)下的文件集合。这非常重要,因为 Dockerfile 及其所需的文件(如应用代码)必须位于构建上下文中。
首先,为项目创建目录,命名为 my-watch-app
:
mkdir ~/project/my-watch-app
cd ~/project/my-watch-app
接下来创建一个简单的应用文件。这里使用一个输出消息的基础 Python 脚本:
nano app.py
在 app.py
中添加以下内容:
print("Hello from the Docker container!")
保存并关闭文件(按 Ctrl+X,输入 Y,再按 Enter)。
然后创建用于构建应用镜像的 Dockerfile,该文件会将 Python 脚本复制到镜像中并运行:
nano Dockerfile
在 Dockerfile 中添加以下内容:
FROM python:3.9-slim
WORKDIR /app
COPY app.py .
CMD ["python", "app.py"]
该 Dockerfile 使用精简版 Python 3.9 镜像作为基础,设置工作目录为 /app
,将 app.py
复制到 /app
目录,并配置容器启动时运行该 Python 脚本。
最后创建 docker-compose.yaml
文件来定义服务,该文件会告知 Docker Compose 如何构建和运行应用:
nano docker-compose.yaml
在 docker-compose.yaml
中添加以下内容:
version: "3.8"
services:
myapp:
build: .
volumes:
- .:/app
该文件定义了一个名为 myapp
的服务。build: .
指令让 Docker Compose 使用当前目录(即构建上下文)中的 Dockerfile 构建镜像。volumes: - .:/app
将宿主机当前目录(.
)挂载到容器内的 /app
目录,这对 docker compose watch
至关重要,它使得宿主机上的变更能同步到容器中。
现在通过 Docker Compose 构建并运行服务以确保配置正确。由于 Docker Compose 未预装,需要先安装:
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
安装完成后即可使用:
docker-compose up --build
你将看到镜像构建和容器运行的输出,并打印 "Hello from the Docker container!"。按 Ctrl+C
可停止容器。