docker-compose 转义单引号不起作用

问题描述 投票:0回答:1

docker-compose 入口点标签转义单引号不起作用。 我尝试使用代码来转义 docker-docker 入口点标记中的单引号。这可以在我的命令行中运行,但不能在 docker-compose 入口点中运行...

这是我的 test.yml 示例代码:

version: "2.4"
services:
  mysql:
    container_name: test
    image: "java-build:21-focal"
    entrypoint:
      /bin/bash -c "
      echo $'CREATE DATABASE IF NOT EXISTS temporal; CREATE DATABASE IF NOT EXISTS temporal_visibility; GRANT ALL PRIVILEGES ON *.* TO \'temporal_admin\'@\'%\'; GRANT ALL PRIVILEGES ON *.* TO \'temporal_admin\'@\'%\'; FLUSH PRIVILEGES;' > /tmp/init.sql;
      cat /tmp/init.sql
      "

输出:

CREATE DATABASE IF NOT EXISTS temporal; CREATE DATABASE IF NOT EXISTS temporal_visibility; GRANT ALL PRIVILEGES ON *.* TO temporal_admin@%; GRANT ALL PRIVILEGES ON *.* TO temporal_admin@%; FLUSH PRIVILEGES;

如您所见,转义单引号不起作用......有什么想法吗?

docker-compose
1个回答
0
投票

这应该修复它并保留单引号:

version: "2.4"
services:
  mysql:
    container_name: test
    image: "ubuntu:focal"
    entrypoint:
      - /bin/bash
      - -c
      - |
        echo $'CREATE DATABASE IF NOT EXISTS temporal; CREATE DATABASE IF NOT EXISTS temporal_visibility; GRANT ALL PRIVILEGES ON *.* TO \'temporal_admin\'@\'%\'; GRANT ALL PRIVILEGES ON *.* TO \'temporal_admin\'@\'%\'; FLUSH PRIVILEGES;' > /tmp/init.sql;
        cat /tmp/init.sql

输出:

CREATE DATABASE IF NOT EXISTS temporal; CREATE DATABASE IF NOT EXISTS temporal_visibility; GRANT ALL PRIVILEGES ON *.* TO 'temporal_admin'@'%'; GRANT ALL PRIVILEGES ON *.* TO 'temporal_admin'@'%'; FLUSH PRIVILEGES;

我所做的改变:

  • 使用 YAML 数组而不是字符串作为入口点,这有助于 shell 参数处理的一致性
  • 使用 YAML chomp
    |
    处理多行字符串
© www.soinside.com 2019 - 2024. All rights reserved.