Py学习  »  docker

如何在docker compose.env文件中包含特殊字符(如“=”)作为变量值的一部分?

AnilR • 5 年前 • 3043 次点击  

根据 docker docs ,环境变量在.env文件中的格式应为 VAR=VAL 对样品来说效果很好 foo=bar 但没有提到不可避免的特殊字符,例如“=”,这可能会混淆 key-val 分隔符或 space 有效数据库连接字符串的两部分,如:

secrets.env文件:

 connectionString=Data Source=some-server;Initial Catalog=db;User ID=uid;Password=secretpassword

docker-compose.debug.yaml文件内容中称为:

services:
  some-service:
    container_name: "service-name"
    env_file:
      - secrets.env
    ports:
      - "80:80"

它进一步被用来转化成 docker-compose.yaml 如下图所示:

enter image description here

所以问题是-如何包含连接字符串 = Spaces 作为价值的一部分?

需要 -我们在VS解决方案中很少有微服务,希望避免重复相同的连接字符串,否则需要在'docker compose.yaml'的服务规范中

尝试 包括单引号/双引号中的值,但在转换后 = 像kubernets yaml文件约定一样,将包含引号的值视为

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/49861
 
3043 次点击  
文章 [ 1 ]  |  最新文章 5 年前
BMitch
Reply   •   1 楼
BMitch    6 年前

我进行了一次测试,没有任何问题:

$ cat .env
ENV=default
USER_NAME=test2
SPECIAL=field=with=equals;and;semi-colons

$ cat docker-compose.env.yml
version: '2'

services:
  test:
    image: busybox
    command: env
    environment:
      - SPECIAL

$ docker-compose -f docker-compose.env.yml up
Creating network "test_default" with the default driver
Creating test_test_1_55eac1c3767c ... done
Attaching to test_test_1_d7787ac5bfc0
test_1_d7787ac5bfc0 | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
test_1_d7787ac5bfc0 | HOSTNAME=d249a16a8e09
test_1_d7787ac5bfc0 | SPECIAL=field=with=equals;and;semi-colons
test_1_d7787ac5bfc0 | HOME=/root
test_test_1_d7787ac5bfc0 exited with code 0