bash - docker compose 命令:服务中“命令”选项的插值格式无效
问题描述
在我的 docker compose 中,我有以下命令:
command: bash -c 'while [[ "$(curl --connect-timeout 2 -s -o /dev/null -w ''%{http_code}'' https://mock-server:4000/readiness)" != "200" ]]; do echo ..; sleep 5; done; echo backend is up; npm start'
等待模拟服务器启动,然后运行后端的启动命令:
backend:
build:
context: ./test
dockerfile: Dockerfile
command: bash -c 'while [[ "$(curl --connect-timeout 2 -s -o /dev/null -w ''%{http_code}'' https://mock-server:4000/readiness)" != "200" ]]; do echo ..; sleep 5; done; echo backend is up; npm start'
ports:
- "3015:3015"
depends_on:
- couchdb
- redis
- mock-server
user: root
但我收到以下错误:
ERROR: Invalid interpolation format for "command" option in service "backend": "bash -c 'while [[ "$(curl --connect-timeout 2 -s -o /dev/null -w ''%{http_code}'' https://uds-mock-server:4000/readiness)" != "200" ]]; do echo ..; sleep 5; done; echo backend is up;; npm start'"
我看不出我的命令有什么问题。任何帮助表示赞赏
解决方案
你需要逃避$
with$$
command: bash -c 'while [[ "$(curl --connect-timeout 2 -s -o /dev/null -w ''%{http_code}'' https://mock-server:4000/readiness)" != "200" ]]; do echo ..; sleep 5; done; echo backend is up; npm start'
command: bash -c 'while [[ "$$(curl --connect-timeout 2 -s -o /dev/null -w ''%{http_code}'' https://mock-server:4000/readiness)" != "200" ]]; do echo ..; sleep 5; done; echo backend is up; npm start'
那应该可以解决构建问题
推荐阅读
- c# - 将查询和标头参数绑定到同一个模型
- c# - 以编程方式将 3D 模型添加到 PowerPoint 演示文稿
- java - Maven JavaDoc Plugin 输出不正确的参数对齐
- mongodb - MongoDB聚合组和计数嵌套数组
- c# - 如何将调试器“附加”到 WPF 窗口按钮?
- ios - 尝试在内容视图中使用 SwiftUI 获取用户位置但显示 nil
- angularjs - 如何在 ng-repeat angularJs 中仅突出显示表的第一行?
- embedded-linux - Raspberry Pi Zero 上的 Buildroot / Busybox 和 OTG 以太网适配器 -> 缺少以太网接口
- git - 更改父级后的Git更新分支
- php - 限制要显示的类别数量: