我希望更频繁地使用docker,最终得到的模板目录结构有点像:
My-New-Project/
|- Dockerfile
|- build.sh
|- start.sh
|- src/...
其中build.sh
和start.sh
只是通常的docker build -t my-new-project .
和docker run -p 8888:8888 -v $(pwd):/workdir my-new-project
但是,我需要为每个新项目修改build.sh
和start.sh
中的图像名称-如何使用bash基于目录基本名称设置图像名称。另外,如果有反对执行我正在做的事情的最佳实践,请告诉我。
最佳答案
结合How to set image name in Dockerfile?和Get current directory name (without full path) in a Bash script的答案,您需要在build.sh和start.sh中做的只是:docker build -t "${PWD##*/}"
和docker run -p 8888:888 -v $(pwd):/workdir "${PWD##*/}"
或者,假设您还需要名称(例如How to convert a string to lower case in Bash?)为小写:
dirname=${PWD##*/}
docker build -t "${dirname,,}"
${PWD##*/}
使用shell参数扩展从路径中删除其他目录,而,,
是另一个将大写转换为小写的目录。关于bash - 您如何根据目录名称命名Docker镜像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64439273/