Bash 如何根据目录名命名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

我希望更频繁地使用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根据目录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或POSIX
sh
兼容。谢谢,这看起来很棒-除了我是一个差劲的macOS用户之外,您如何在bash3.x中转换为小写?请注意,
${dirname,}/code>仅为Bash 4+。可怜的macOS用户仍然使用Bash3.x开箱即用。另一个参数扩展与任何shell、Bash或POSIX
sh
兼容。谢谢,这看起来很棒-除了我是一个糟糕的macOS用户之外-如何在Bash 3.x中转换为小写?
dirname=${PWD##*/}

docker build -t "${dirname,,}"