Bash 如何根据目录名命名docker图像?
我希望更频繁地使用docker,最终得到的模板目录结构有点像:Bash 如何根据目录名命名docker图像?,bash,docker,dockerfile,Bash,Docker,Dockerfile,我希望更频繁地使用docker,最终得到的模板目录结构有点像: My-New-Project/ |- Dockerfile |- build.sh |- start.sh |- src/... 其中build.sh和start.sh只是通常的docker构建-t我的新项目。和docker运行-p 8888:8888-v$(pwd):/workdir我的新项目 但是,我需要为每个新项目修改build.sh&start.sh中的图像名称-如何使用bash根据目录ba
My-New-Project/
|- Dockerfile
|- build.sh
|- start.sh
|- src/...
其中build.sh
和start.sh
只是通常的docker构建-t我的新项目。
和docker运行-p 8888:8888-v$(pwd):/workdir我的新项目
但是,我需要为每个新项目修改build.sh
&start.sh
中的图像名称-如何使用bash根据目录basename设置图像名称
另外,如果有针对我正在做的事情的最佳做法,请让我知道。结合和的答案,在build.sh和start.sh中需要做的就是:
docker build-t“${PWD##*/}”
和docker run-p888:888-v$(PWD):/workdir“${PWD##*/}”
或者,假设您还需要使用小写名称,如示例()所示:
${PWD##*/}
使用shell参数扩展从路径中删除其他目录,,
是另一个将大写转换为小写的目录。结合和的答案,在build.sh和start.sh中只需执行以下操作:
docker build-t“${PWD##*/}”
和docker run-p888:888-v$(PWD):/workdir“${PWD##*/}”
或者,假设您还需要使用小写名称,如示例()所示:
${PWD##*/}
使用shell参数扩展从路径中删除其他目录,,
是另一个将大写转换为小写的目录。我觉得您的方法有点好,也许我会尝试一下。但现在,我用这个。关于bash问题:您是否尝试探索basename命令?我发现您的方法有点好,也许我会尝试一下。但现在,我用这个。关于bash问题:您是否尝试研究basename命令?请注意,${dirname,,}
只是bash4+而已。可怜的macOS用户仍然使用Bash3.x开箱即用。另一个参数扩展与任何shell、Bash或POSIXsh
兼容。谢谢,这看起来很棒-除了我是一个差劲的macOS用户之外,您如何在bash3.x中转换为小写?请注意,${dirname,}/code>仅为Bash 4+。可怜的macOS用户仍然使用Bash3.x开箱即用。另一个参数扩展与任何shell、Bash或POSIXsh
兼容。谢谢,这看起来很棒-除了我是一个糟糕的macOS用户之外-如何在Bash 3.x中转换为小写?
dirname=${PWD##*/}
docker build -t "${dirname,,}"