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

相关推荐
K***430628 分钟前
IDEA+Docker一键部署项目SpringBoot项目
spring boot·docker·intellij-idea
q***33372 小时前
oracle 12c查看执行过的sql及当前正在执行的sql
java·sql·oracle
Y***h1876 小时前
第二章 Spring中的Bean
java·后端·spring
8***29316 小时前
解决 Tomcat 跨域问题 - Tomcat 配置静态文件和 Java Web 服务(Spring MVC Springboot)同时允许跨域
java·前端·spring
CoderYanger6 小时前
优选算法-栈:67.基本计算器Ⅱ
java·开发语言·算法·leetcode·职场和发展·1024程序员节
小雪_Snow6 小时前
CentOS 7 测试 docker 镜像源
docker·centos
q***06296 小时前
Tomcat的升级
java·tomcat
多多*6 小时前
Java复习 操作系统原理 计算机网络相关 2025年11月23日
java·开发语言·网络·算法·spring·microsoft·maven
青云交7 小时前
Java 大视界 -- Java 大数据在智能物流无人配送车路径规划与协同调度中的应用
java·spark·路径规划·大数据分析·智能物流·无人配送车·协同调度
t***p9357 小时前
idea创建SpringBoot自动创建Lombok无效果(解决)
spring boot·后端·intellij-idea