小编Tom*_*Tom的帖子

用纯 bash 创建 URL 友好的 slug?

我追求一个纯粹的 bash 解决方案来“slugify”一个变量,这不像我的那么难看。

slugify : 小写,缩短为 63 字节,除 0-9 和 az 之外的所有内容都替换为 -。没有前导/尾随 -。结果是一个适合在 URL 主机名和域名中使用的字符串。输入很可能是一系列带有不想要的字符的单词,例如:

'Effrafax_mUKwT'uP7(Garkbit<\1}@NJ"RJ"Hactar*S;-H%x.?oLazlarl(=Zss@c9?qick.:?BZarquonelW{x>g@'k'

其中一个 slug 看起来像:'effrafax-mukwt-up7-garkbit-1-njrjhactar-shx-olazlarl-zss-c9-q'

slugify () {
  next=${1//+([^A-Za-z0-9])/-}
  next=${next:0:63}
  next=${next,,}
  next=${next#-}
  next=${next%-}
  echo $next
}
Run Code Online (Sandbox Code Playgroud)

另外为什么不${next//^-|-$}去掉前缀和后缀'-'?其他建议?

bash slug parameter-expansion

6
推荐指数
2
解决办法
1973
查看次数

docker 在没有主机卷的情况下运行本地脚本

目标是在数据库容器运行后,使用curl 将下载的数据添加到多容器 Web 应用程序的数据库服务器容器中。只要我使用主机卷,我就可以从 docker-compose.yml 或独立于 Web 应用程序的 docker run 执行此操作。

在不使用主机卷或特定于 Web 应用程序的 Dockerfile 的情况下如何做到这一点?

带有主机卷的 Docker Compose 示例:

dbinit:
build: ./webtools_config/initdb
command: bash -c "/tmp/webtools_config/dbinit.sh"
volumes:
 - ./webtools_config:/tmp/webtools_config
links:
 - db1
 - db2
Run Code Online (Sandbox Code Playgroud)

docker 运行的示例,我想传递docker 客户端本地的脚本文件,例如 ./dbinit.sh:

docker run -a stdin -a stdout -i -t \
--link dir_db1_1:db1 \
--link dir_db2_1:db2 \
initdb /bin/sh -c "./dbinit.sh"
Run Code Online (Sandbox Code Playgroud)

database shell docker docker-compose

5
推荐指数
1
解决办法
6349
查看次数

makefile - 构建具有多个目标的多个文件

我有一个包含多个 Dockerfile 的项目,每个文件都位于我用作 Docker 映像标签的命名目录中。我需要为每个 Dockerfile 构建、测试和推送每个 docker 映像。我需要做什么才能使用 GNU Make 进行如下工作?

# BUILDS needs to be a list of directories, not a list of Dockerfiles
BUILDS  := $(wildcard */Dockerfile)
VERSION := $(shell git rev-parse --short=12 --verify HEAD)
DOCKER_REPO_URL := quay.io/reponame

define docker_build =
$(1):
    @echo "Building $$@"
    docker build -t $$@ --force-rm $$@
endef

define docker_test =
$(1):
    @echo "Testing $$@"
    docker inspect $$@
    docker run --rm $$@ help
endef

define docker_push =
$(1):
    @echo "Pushing $$@"
    docker tag …
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make dockerfile

2
推荐指数
1
解决办法
1597
查看次数