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 文件 配置如下

yml 复制代码
  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 文件即可,容器会在下一次重启时加载新的配置。

示例:

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

text 复制代码
my-project/
  ├── docker-compose.yml
  └── redis/
      └── redis.conf

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

yaml 复制代码
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 文件或者把 文件的路径改成绝对路径

相关推荐
初学小白...15 分钟前
实现Runnable接口
java·开发语言
墨着染霜华38 分钟前
Java Optional orElse orElseGet orElseThrow()
java
czhc11400756631 小时前
JAVA1026 方法;类:抽象类、抽象类继承;接口、接口继承 Linux:Mysql
java·linux·mysql
一 乐1 小时前
宠物管理|宠物店管理|基于SSM+vue的宠物店管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·宠物
gAlAxy...1 小时前
面试JAVASE基础(五)——Java 集合体系
java·python·面试·1024程序员节
ceclar1232 小时前
C++容器list
java·c++·list
张较瘦_2 小时前
[论文阅读] 从 5MB 到 1.6GB 数据:Java/Scala/Python 在 Spark 中的性能表现全解析
java·python·scala
Xiaoweidumpb2 小时前
Linux Docker docker-compose 部署python脚本
linux·python·docker
Han.miracle2 小时前
数据库圣经-----最终章JDBC
java·数据库·学习·maven·database
Broken Arrows2 小时前
解决同一个宿主机的两个容器无法端口互通报错“No route to host“的问题记录
运维·学习·docker