Docker 试图通过未显示在预期目录中的卷文件添加配置文件

Docker 试图通过未显示在预期目录中的卷文件添加配置文件,docker,docker-compose,Docker,Docker Compose,在我的docker compose中,我有: ${PROJECTS\u DIR:-~/PROJECTS/Zen/rstudio-prefs.json}:/home/.config/rstudio/rstudio-prefs.json 然后,在我的Makefile中,我有: export PROJECTS_DIR ?= ~/Projects/Zen .PHONY: build build: docker-compose build .PHONY: up up:

在我的docker compose中,我有:

${PROJECTS\u DIR:-~/PROJECTS/Zen/rstudio-prefs.json}:/home/.config/rstudio/rstudio-prefs.json 然后,在我的Makefile中,我有:

export PROJECTS_DIR ?= ~/Projects/Zen

.PHONY: build
build:
        docker-compose build

.PHONY: up
up:
        docker-compose pull
        docker-compose up -d

.PHONY: restart
restart:
        docker-compose restart

.PHONY: down
down:
        docker-compose down
在我运行docker的本地笔记本电脑上,我有一个名为rstudio-prefs.json的文件。我想将此文件添加到正在运行的容器中,以便它显示在/home/rstudio/.config/rstudio中

当我运行make build和make up时,我无法进入容器,但是文件rstudio-prefs.json并没有按预期显示

如何将~/Projects/Zen/ide rstudio/rstudio-prefs.json从local添加到/home/.config/rstudio-prefs.json中的容器中

根据评论,以下是我的整个docker-compose.yml:

version: "3.5"
services:
  ide-rstudio:
    image: rocker/verse:latest
    ports:
      - 8787:8787
      - 3838:3838
    environment:
      PASSWORD: test
      ROOT: "TRUE"
      ADD: "shiny"
    volumes:
      - ${PROJECTS_DIR:-~/Projects/Zen}:/home/rstudio/Projects
      - ${PROJECTS_DIR:-~/Projects/Zen/ide-rstudio/rstudio-prefs.json}:/home/.config/rstudio/rstudio-prefs.json

您可以装载完整的目录,而不仅仅是文件。有时,图像层可能会有一些意外的行为

仅对docker-compose.yml进行了一些修改,以缩小问题范围,并获得了一个成功的结果。我的系统中未定义项目的目录:

docker-compose.yml 版本:3.5 服务: ide rstudio: 图片:摇滚乐/诗歌:最新 标准开放:正确 命令:bash 环境: 密码:test 根:是的 地址:闪亮 卷数: -${PROJECTS\u DIR:-~/PROJECTS/test rstudio}:/home/rstudio/PROJECTS -${PROJECTS\u DIR:-~/PROJECTS/Zen/ide rstudio/}:/home/.config/rstudio/ 文件已正确装入:

$ pwd
/home/myuser/Projects/test-rstudio
$ docker-compose up -d
$ docker-compose exec ide-rstudio ls -l /home/rstudio/Projects /home/.config/rstudio
/home/.config/rstudio:
total 4
-rw-rw-r-- 1 1000 1000 17 Nov  7 18:58 rstudio-prefs.json

/home/rstudio/Projects:
total 8
-rw-rw-r-- 1 1000 1000  395 Nov  7 19:01 docker-compose.yml
drwxrwxr-x 2 1000 1000 4096 Nov  7 18:58 ide-rstudio

$ cat ide-rstudio/rstudio-prefs.json 
{"hello":"world"}
$ docker-compose exec ide-rstudio cat /home/.config/rstudio/rstudio-prefs.json
{"hello":"world"}
编辑 将docker-compose.yml改回使用rocker/verse而不是ubuntu

编辑2
更改docker-compose.yml以反映成功的响应:您可以装载完整的目录,而不仅仅是文件。有时,图像层可能会出现一些意外行为。

请发布docker-compose.yml文件的一部分,其中至少显示了服务定义的最小部分,而不仅仅是故障卷行。发布完整的服务是可以的,如果你没有问题分享它。嗨@emi我已经添加了这个。如果您看到任何不正确的地方,请务必让我知道我已经进行了测试,并进行了最小的修改,它可以正常工作。唯一未测试的是env var PROJECTS\u DIR的值。你能发布它吗?在运行的容器中,我尝试了echo$PROJECTS\u DIR,但没有返回任何结果。所以我想这会缩小范围?这个变量应该/可以在docker-compose.yml文件所在的主机中定义。请稍等,因为默认情况下会在主机中安装同名文件。我的目标是用保存的文件覆盖rstudio-prefs.json文件,而不是全新的开箱即用配置,我在本地将$PROJECTS\u DIR添加到My.bashrc中。echo$PROJECTS\u DIR/home/myname/PROJECTS但是在容器$PROJECTS\u DIR中仍然没有显示任何设置值。使用原始摇滚乐/韵文图像更新了答案。相同的成功结果。但是,在容器$PROJECTS\u中,DIR仍然没有显示任何设置值:如果没有在容器管道Dockerfile、docker compose、.env、entrypoint、…、中的某个位置定义它。。。,它不应该在容器中定义。似乎当我在docker compose中包含command:bash时,rstudio ide不会加载到localhost:8787上。运行时,您是否能够在localhost:8787的浏览器中看到ide?我对码头工人隐瞒了港口部分,也没有他们。仍然没有成功。感谢您的尝试:/