4

AWS ECS で fargate コンテナを開始しようとしています。コンテナ定義には

"command": [
        "/bin/bash",
        "-c",
        "\"envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'\""
      ]

私も試しました:

"command": [
        "/bin/bash",
        "-c",
        "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
      ]

を使用するdocker runと、以下を正常に使用できます。

docker run -p 8000:80 -e "VAR1=somevalue" -d nginx-sample:latest /bin/bash -c "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"

そしてkubernetesの世界(これも機能します):

 containers:
      env:
      - name: VAR1
        value: "somevalue"
      command: ["/bin/bash"]
      args: ["-c", "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"]

これまでのところ、AWS Fargate でこれを機能させることはできません。有効な方法で引数を渡す方法が明確ではありません。コンテナーは開始できるようになる前に終了したように見えますが、明確なログ メッセージがないため、その理由は完全には明らかではありません。/bin/bash -cコマンド引数が渡される方法の構文で間違っていると思います。

4

2 に答える 2

1

このアプローチを試してください

"entryPoint": [
        "/bin/bash",
        "-c"
      ],
"command": [
        "envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'"
      ],

このようなことをしなければならなかったとき、これはうまくいきました。

私たちの場合、コンテナがベース イメージコマンドentryPointを無視するように強制していました。次に、 arryで追加のコマンドを与えました。command

そうでない場合、ECS は基本イメージCMD( ) を使用し、その上CMD ["nginx", "-g", "daemon off;"]で配列内の何かを実行します。command私はこれを推測しているだけです。なぜ他の方法がうまくいかないのか理解できないので。

于 2019-02-24T13:29:49.570 に答える