在 docker 容器中出现错误“/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: not found”

Posted

技术标签:

【中文标题】在 docker 容器中出现错误“/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: not found”【英文标题】:Getting error "/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: not found" inside docker container 【发布时间】:2019-12-08 11:02:14 【问题描述】:

我正在使用 docker compose 启动一个 docker 容器并传递我希望它使用的端口。但是启动redis的命令不起作用,并且说找不到:

/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: 未找到

docker-compose

version: '2.1'
services:

  redis:
    image: redis
    ports:
      - $Ports_Exposed_Redis:$Ports_Exposed_Redis
    command: 
      - redis-server --port $Ports_Exposed_Redis

我将Ports_Exposed_Redis 作为环境变量传递,例如:

export Ports_Exposed_Redis=6000

如何将端口传递给它以运行 redis?

【问题讨论】:

【参考方案1】:

你使用- redis-server --port $Ports_Exposed_Redis,表示你要使用CMDexec form,但是你的yaml格式不对,指的是this:

你应该使用:

command:
    - redis-server
    - --port
    - $Ports_Exposed_Redis

或者:

command: ["redis-server", "--port", "$Ports_Exposed_Redis"]

【讨论】:

@atlinr 谢谢。如果我这样做,我还可以运行另一个命令吗?因为它看起来像是在构建一条线 不,只有最后一个命令才会生效。你可能想看看docs.docker.com/config/containers/multi-service_container,这里的命令只是作为docker-entrypoint.sh的参数,最后会被exec执行替换当前进程,见this

以上是关于在 docker 容器中出现错误“/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: not found”的主要内容,如果未能解决你的问题,请参考以下文章

在 docker 容器中出现错误“/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: not found”

如何避免使用 Visual Studio 和 docker 容器在 API 上出现连接被拒绝错误?

Grails clean 命令在 Ubuntu docker 容器中给出错误

keycloak 容器正在重新启动,但出现错误 docker-compose

Django docker 容器无法连接到 mysql 容器,出现错误“无法连接到 'db' (111) 上的 MySQL 服务器”)

doxygen的安装和make命令中的错误