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

相关推荐
engchina5 小时前
WSL Ubuntu で Kubernetes v1.34.2 + Docker 環境を構築する
ubuntu·docker·kubernetes
JH30735 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_6 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble6 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟7 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖7 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_12498707538 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_8 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.8 小时前
Day06——权限认证-项目集成
java
瑶山8 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard