如何使用docker-compose.yml而不是run命令配置这些docker容器?

如何使用docker-compose.yml而不是run命令配置这些docker容器?,docker,redis,docker-compose,rabbitmq,Docker,Redis,Docker Compose,Rabbitmq,我有两个独立的容器,我一直在使用以下运行命令一次构建和运行它们: Redis容器: docker run -v C:\Users\me\some_directory\redis.windows.conf:/redis- settings/redis.conf --name my_local_redis -p 6379:6379 redis gosu redis:redis redis-server /redis-settings/redis.conf docker run -d --hos

我有两个独立的容器,我一直在使用以下运行命令一次构建和运行它们:

Redis容器:

docker run -v C:\Users\me\some_directory\redis.windows.conf:/redis- 
settings/redis.conf --name my_local_redis -p 6379:6379 redis gosu redis:redis 
redis-server /redis-settings/redis.conf
docker run -d --hostname devlab --name rabbitmq-server -p 5672:5672 -p 15672:15672 rabbitmq:3-management
rabbitmq容器:

docker run -v C:\Users\me\some_directory\redis.windows.conf:/redis- 
settings/redis.conf --name my_local_redis -p 6379:6379 redis gosu redis:redis 
redis-server /redis-settings/redis.conf
docker run -d --hostname devlab --name rabbitmq-server -p 5672:5672 -p 15672:15672 rabbitmq:3-management
我已经看过docker compose文档,我可以看到如何将mount(-v在run命令中)绑定到第一个run命令中的相关目录,但是如何从docker hub中提取现有映像并通过docker compose yml执行gosu命令


任何帮助都将不胜感激。

要从docker hub中提取图像,只需使用
image
指令在撰写文件中指定图像名称即可。要运行特定命令,请使用
命令

不过要小心,
命令将覆盖您的
CMD
,这意味着它将更改容器启动的进程。在redis的情况下,
CMD
redis服务器
。您可以使用
命令:gosu redis:redis redis server…

所以它会是这样的:

services: 
  my_local_redis:
    image: redis
    [...]
    ports: 
      - 6379:6379
    command: gosu redis:redis redis-server /redis-settings/redis.conf

我会让你解决剩下的问题

感谢您为我指明了正确的方向,但在使用gosu运行命令后,我遇到了以下错误:error:exec:“&&”:在$PATH中找不到可执行文件。你知道为什么在docker compose yml中运行而不是在docker compose yml中运行吗?你能在没有“&&”的情况下尝试吗?你肯定应该在没有“&&”的情况下运行,我改变了答案。我对gosu的工作方式错了。是的,就是这样<代码>命令:
专门覆盖Dockerfile
CMD
,它与在
docker run image name
之后传递命令相同。