【问题标题】:Getting error "/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: not found" inside docker container在 docker 容器中出现错误“/usr/local/bin/docker-entrypoint.sh: 16: exec: redis-server --port 6000: not found”
【发布时间】: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?

【问题讨论】:

    标签: docker redis docker-compose


    【解决方案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
    猜你喜欢
    • 2022-08-18
    • 2022-11-03
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 2020-03-03
    • 2022-07-09
    • 2015-12-18
    相关资源
    最近更新 更多