例子场景
假设有一个简单的Python应用,想要在容器内运行。代码在宿主机上的一个目录中,希望能够在宿主机上编辑这个代码文件,然后在容器内立即看到这些变化。
目录结构
假设项目目录如下:
/home/user/myapp/
│
├── docker-compose.yml
└── app.py
app.py
是Python应用代码。
docker-compose.yml
文件
version: '3'
services:
python-app:
image: python:3.8
volumes:
- ./app.py:/app/app.py
command: python /app/app.py
解释
-
version: '3'
: Docker Compose 文件的版本。 -
services:
: 定义了一个服务。 -
python-app:
: 这个服务的名称是python-app
。 -
image: python:3.8
: 使用官方的 Python 3.8 镜像。 -
volumes:
: 定义卷映射。./app.py:/app/app.py
: 将宿主机上的app.py
文件映射到容器内的/app/app.py
。这样在宿主机上修改app.py
后,容器内的文件也会同步更新。
-
command: python /app/app.py
: 当容器启动时,运行命令python /app/app.py
来执行 Python 脚本。
使用此 docker-compose.yml
-
在项目目录(
/home/user/myapp/
)下运行以下命令启动容器:docker-compose up
-
Python 脚本会在容器内运行,并输出结果。
-
如果在宿主机上编辑
app.py
文件,这些更改会立即反映在容器内,并且可以重新启动容器以运行更新后的代码。
总结
这个例子展示了如何在 docker-compose.yml
文件中使用卷映射,将宿主机上的一个简单文件与容器内的文件关联起来,使得可以轻松地在宿主机上编辑代码并在容器内运行。