首页 > 解决方案 > docker-compose:在不改变目标路径的情况下映射容器下的整个目录

问题描述

我可以像这样在 docker-compose.yml 中的容器下挂载一个目录:

volumes:    
  - ${SRC_PATH}:/usr/local/airflow/src/

我的 SRC_PATH 是主机上目录的路径。我的问题是默认行为将我的 SRC_PATH 下的内容放到/usr/local/airflow/src/. 但是,我想要的是将目录本身放在目标路径下。因此,如果我的 SRC_PATH 在 .env 文件中定义为,/Users/myname/dev/abc那么我希望容器上的路径为/usr/local/airflow/src/abc

约束是我不能在撰写文件中硬编码目标路径。SRC_PATH 将在 .env 文件中更改,我希望目标路径相应更改。那可能吗?

标签: dockerdocker-composedocker-volume

解决方案


看起来您想要获取basenameof$SRC_PATH并将其附加到容器中的文件夹中。

理想情况下,如果你能做这样的事情会很好:

volumes:    
  - ${SRC_PATH}:/app/$(basename $SRC_PATH)

但是,显然,这不起作用。

据我所知,您有两个简单的选择:

如果父级$SRC_PATH是固定的并且永远不会改变,你可以这样做:

volumes:    
  - /usr/local/whatever/${APP}:/app/${APP}

如果它不固定,那么我也会考虑定义$DEST_PATH

volumes:    
  - ${SRC_PATH}:/app/${DEST_PATH}

推荐阅读