我试图围绕 Docker 卷来思考,但我必须缺少一些东西才能理解它。
假设我有一个 Python 应用程序,需要根据 env 变量进行一些初始化。我想要实现的是拥有一个“仅代码图像”,我可以从中启动将在执行时安装的容器。然后Main 容器的入口点脚本将从Code only 容器中读取并生成一些文件。
我试图创建一个图像以获得代码的副本
FROM ubuntu
COPY ./app /usr/local/code/app
然后docker create --name code_volume
并使用 docker-compose:
app:
image: python/app
hostname: app
ports:
- "2443:443"
environment:
- ENV=stuff
volumes_from:
- code_volume
我从应用程序容器中收到一个错误,说它在 /usr/local/code/app/src 中找不到文件,但是当我使用 bash 运行 code_volume 然后 ls 进入文件夹时,文件就在那里......
我尝试更改访问权限,添加 /bin/true (在某些示例中看到它),但我无法获得我想要的工作。我检查了该docker volume create
功能,但它似乎是用于存储/共享数据之后
我错过了什么?是否在安装卷之前执行入口点脚本?对于这种不涉及安装文件夹并为每个容器保留一份副本的情况,是否有任何最佳实践?我应该重新考虑我的容器吗?