docker 为什么变量赋值在停靠合成命令中不能正常工作?

lyr7nygr  于 2023-02-07  发布在  Docker
关注(0)|答案(1)|浏览(126)

我在我的docker-compose.yml中有以下内容:

my-service:
  image: amazon/aws-cli
  entrypoint: /bin/sh -c
  command: >
    '
      a=1899
      echo "The value of \"a\" is $a"
    '

当我运行它的时候,我看到了The value of "a" is .,所以出于某种原因,变量赋值并没有像我期望的那样工作,你知道发生了什么吗?
我试着将我的Docker组合简化到最低限度,但仍然是同样的问题。我希望变量赋值和输出与Bash脚本中的相同。

sd2nnvve

sd2nnvve1#

您需要转义$符号,如果您不转义该符号,那么它将尝试从您的主机环境中获取值,而不是从Docker容器中获取值。
因此,您可以将命令更改为

my-service:
  image: amazon/aws-cli
  entrypoint: /bin/sh -c
  command: >
    '
      a=1899
      echo "The value of \"a\" is $$a"
    '

如果您想从主机传递它,您可以这样做
x一个一个一个一个x一个一个二个x

相关问题