我正在尝试运行Web服务器中内置的PHP作为容器的启动,但是docker-compose up抱怨它无法解析docker-compose.yml中的`符号(反引号?backtick?)。
这是我的docker-compose.yml
version: "3"
services:
sf-api:
image: reston/php:7.1
ports:
- "8000:8000"
volumes:
- ".:/tmp/target"
working_dir: "/tmp/target"
command: ["php","-S","`hostname -i`:8000"]
我正在尝试做的是使Web服务器绑定(bind)到容器外部IP,而不是127.0.0.1。
编辑:
这是运行docker-compose up的输出
$ docker-compose up
Recreating storefrontapi_sf-api_1 ...
Recreating storefrontapi_sf-api_1 ... done
Attaching to storefrontapi_sf-api_1
sf-api_1 | Invalid address: `hostname -i`
storefrontapi_sf-api_1 exited with code 1
最佳答案
您明确地告诉docker-compose不要在使用命令的json exec语法的shell中运行命令。如果要让Shell解析容器内的反引号,则需要使用Shell运行命令。请注意,这将破坏诸如信号处理之类的功能,因为pid 1中的 shell 将截取并忽略SIGTERM(假定它处于单用户模式,您不希望 shell 退出)。命令的字符串语法为您运行 shell 程序,或者您可以更改命令以显式启动 shell 程序。这些都应该起作用:
command: ["/bin/sh", "-c", "php -S `hostname -i`:8000"]
command: "php -S `hostname -i`:8000"
关于docker - 如何在docker-compose.yml文件中转义反引号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47672046/