luk*_*aus 20 docker docker-compose
我需要在docker-compose.yml中添加一些路径到我的PATH
在docker-compose.yml中我试过了
app:
...
environment:
- PATH /code/project
Run Code Online (Sandbox Code Playgroud)
然而,这只会覆盖现有的PATH - 而我想添加到现有的PATH
Tho*_*eil 14
A docker-compose.yml没有任何意义来扩展已经在Docker镜像中设置的环境变量.
我看到做这些事情的唯一方法是拥有一个Docker镜像,它需要一些环境变量(比方说ADDITONAL_PATH),并在运行时扩展它自己的PATH环境变量.
我们来看看以下Dockerfile:
FROM busybox
ENV PATH /foo:/bar
CMD export PATH=$PATH:$ADDITIONAL_PATH; /bin/echo -e "ADDITIONAL_PATH is $ADDITIONAL_PATH\nPATH is $PATH"
Run Code Online (Sandbox Code Playgroud)
和下面的搬运工-compose.yml文件(在相同的目录中Dockerfile):
app:
build: .
Run Code Online (Sandbox Code Playgroud)
构建图像: docker-compose build
并启动容器:docker-compose up,您将获得以下输出:
app_1 | ADDITIONAL_PATH是
app_1 | PATH是/ foo:/ bar:
现在将docker-compose.yml文件更改为:
app:
build: .
environment:
- ADDITIONAL_PATH=/code/project
Run Code Online (Sandbox Code Playgroud)
并启动一个容器:docker-compose up,您现在将获得以下输出:
app_1 | ADDITIONAL_PATH是/ code/project
app_1 | PATH是/ foo:/ bar:/ code/project
另请注意docker-compose.yml文件中的语法错误:=环境变量名称与其值之间必须有等号().
environment:
- PATH=/code/project
Run Code Online (Sandbox Code Playgroud)
代替
environment:
- PATH /code/project
Run Code Online (Sandbox Code Playgroud)
Roc*_*n17 10
我知道这是一个旧线程,但我认为有几件事可以澄清。
通过docker-compose文件只能从主机寻址变量,因此不可能从 docker-compose.yml 扩展图像的 PATH:
app:
...
environment:
- PATH=/code/project:$PATH
Run Code Online (Sandbox Code Playgroud)
另一方面,由于EXPORTED变量不会通过图像持久化,因此使用 RUN 或 CMD EXPORT 指令是不够的。由于每个 Dockerfile 指令都会生成一个中间映像,因此这些值将反映在它们中,而不是反映在您实际需要它们的主映像中。
最好的选择是在以下位置使用构建选项docker-compose.yml:
app:
build: .
Run Code Online (Sandbox Code Playgroud)
并将 ENV 选项添加到Dockerfile:
ENV PATH /path/to/bin/folder:$PATH
这是在 issue #684 中建议的,我还建议查看答案:docker ENV vs RUN export。
luk*_*aus -8
将单个位置添加到 docker-compose.yml 文件中的 PATH:
app
environment:
- PATH=/code/project:$PATH
Run Code Online (Sandbox Code Playgroud)
将多个位置添加到 docker-compose.yml 文件中的 PATH
app
environment:
- PATH=/code/project:/code/lib:/foo/bar:$PATH
Run Code Online (Sandbox Code Playgroud)
添加到您的 PYTHONPATH
app
environment:
- PYTHONPATH=/code/project:/code/lib:/foo/bar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18281 次 |
| 最近记录: |