idea 运行 docker-compose 文件问题

我idea 连接远程docker 然后本地运行compose 文件出了问题

C:\Program Files\Docker\Docker\resources\bin\docker.exe compose -f D:\aproject\group-buy-market\suger_group_buy\docs\dev-ops\docker-compose-environment.yml -p dev-ops up -d

正在准备 Docker SSH 环境…

time="2025-01-07T19:46:44+08:00" level=warning msg="D:\\aproject\\group-buy-market\\suger_group_buy\\docs\\dev-ops\\docker-compose-environment.yml: the attribute version is obsolete, it will be ignored, please remove it to avoid potential confusion"

[+] Running 0/2

 - Container mysql  Creating                                                                                              0.1s 

 - Container redis  Creating                                                                                              0.1s 

Error response from daemon: invalid volume specification: 'D:\aproject\group-buy-market\suger_group_buy\docs\dev-ops\redis\redis.conf:/usr/local/etc/redis/redis.conf:rw 

docker-compose 进程结束,退出代码为 1 `

本地的compose 文件 配置如下

  redis:
    image: registry.cn-hangzhou.aliyuncs.com/xfg-studio/redis:6.2
    container_name: redis
    restart: always
    hostname: redis
    privileged: true
    ports:
      - 16379:6379
    volumes:
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    command: redis-server /usr/local/etc/redis/redis.conf

在 Docker Compose 文件中的 volumes 选项,- ./redis/redis.conf:/usr/local/etc/redis/redis.conf 用于将 主机文件系统中的文件或目录 映射到 容器内的文件或目录

各部分解释:

  • ./redis/redis.conf:这是 主机(宿主机) 上的文件路径。相对路径 ./redis/redis.conf 指向了 Docker Compose 配置文件所在目录下的 redis/redis.conf 文件。该路径会被解析为 相对于当前目录 的位置。

    • ./ 代表当前目录(即 Docker Compose 文件所在的目录)。
    • redis/redis.conf 是相对于当前目录的子目录 redis 下的 redis.conf 文件。
  • /usr/local/etc/redis/redis.conf:这是 容器内的文件路径。当容器启动时,Docker 会将主机上的文件 ./redis/redis.conf 映射到容器内的 /usr/local/etc/redis/redis.conf。这意味着容器中的 Redis 服务会读取主机上该路径下的配置文件。

具体作用:

  • 配置文件映射:该语句的主要作用是将 主机上的 Redis 配置文件redis.conf)映射到容器内 Redis 容器的默认配置路径 /usr/local/etc/redis/redis.conf,以便容器启动时使用主机上的配置文件,而不是使用容器内部的默认配置。

    这样,你可以自定义 Redis 的配置(比如修改内存限制、日志路径等),并且容器每次启动时都会使用这些自定义配置。

  • 持久化配置:通过将配置文件映射到本地,你可以轻松地更新和修改 Redis 配置而不需要重新构建 Docker 镜像。如果需要调整 Redis 的配置,只需要修改主机上的 redis.conf 文件即可,容器会在下一次重启时加载新的配置。

示例:

假设你的项目目录结构如下:

my-project/
  ├── docker-compose.yml
  └── redis/
      └── redis.conf

然后,docker-compose.yml 文件中的部分内容如下:

version: '3'
services:
  redis:
    image: redis:latest
    volumes:
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - "6379:6379"

运行效果:

  1. 当你使用 docker-compose up 启动 Redis 服务时,Docker 会将 主机目录 ./redis/redis.conf 中的 redis.conf 文件映射到 容器内 /usr/local/etc/redis/redis.conf 路径。
  2. 容器内运行的 Redis 服务将读取该配置文件,并应用其中的设置(例如,配置端口、最大内存等)。

问题所在:

我原本想把服务器自身的路径映射到容器的,但是这样配置映射的是本地idea的路径

解决方法:

在docker服务器运行docker coompose 文件或者把 文件的路径改成绝对路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值