docker使用目录组合装入单个文件

docker使用目录组合装入单个文件,docker,docker-compose,Docker,Docker Compose,如果将文件放在与docker compose up命令相关的子目录(myconfig)中,则无法装载该文件。 $PWD是/home/username/temp/和docker组合,从那里开始运行 这不起作用: version: '3' services: proxy: container_name: proxy image: nginx ports: - "80:80" volumes: - $PWD/myconf

如果将文件放在与docker compose up命令相关的子目录(myconfig)中,则无法装载该文件。 $PWD是/home/username/temp/和docker组合,从那里开始运行

这不起作用:

version: '3'
services: 
  proxy:
    container_name: proxy
    image: nginx
    ports:
      - "80:80"
    volumes:
      - $PWD/myconfig/nginx.conf:/etc/nginx/conf.d/default.conf
但是,如果我将nginx.conf复制到$PWD目录,这是可行的:

version: '3'
services: 
  proxy:
    container_name: proxy
    image: nginx
    ports:
      - "80:80"
    volumes:
      - $PWD/nginx.conf:/etc/nginx/conf.d/default.conf
version: '3'
services: 
  proxy:
    container_name: proxy
    image: nginx
    ports:
      - "80:80"
    volumes:
    - type: bind
      source: $PWD/myconfig/nginx.conf
      target: /etc/nginx/conf.d/default.conf
因此,这些都不起作用:

$PWD/myconfig/nginx.conf
./myconfig/nginx.conf
/home/username/temp/myconfig/nginx.conf
但是,如果我将$PWD/myconfig/nginx.conf复制到$PWD/config.conf,这些功能就可以工作了:

./nginx.conf 
$PWD/nginx.conf
日志:

但是,当我使用长语法时,它使用的是子目录:

version: '3'
services: 
  proxy:
    container_name: proxy
    image: nginx
    ports:
      - "80:80"
    volumes:
      - $PWD/nginx.conf:/etc/nginx/conf.d/default.conf
version: '3'
services: 
  proxy:
    container_name: proxy
    image: nginx
    ports:
      - "80:80"
    volumes:
    - type: bind
      source: $PWD/myconfig/nginx.conf
      target: /etc/nginx/conf.d/default.conf
这是我错过的东西,还是一个bug或缺乏文档

Docker和Docker组合版本:

➜  ~ docker version
Client: Docker Engine - Community
 Cloud integration: 1.0.7
 Version:           20.10.2
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        2291f61
 Built:             Mon Dec 28 16:17:34 2020
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.2
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       8891c58
  Built:            Mon Dec 28 16:15:28 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.3
  GitCommit:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  Version:          1.0.0-rc92
  GitCommit:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
➜  ~ docker-compose version
docker-compose version 1.27.4, build 40524192
docker-py version: 4.3.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

你的例子对我很有用

# docker-compose --version
docker-compose version 1.25.0, build unknown
由于您提到,即使使用显式路径,它也不工作,而它在主文件夹中工作,因此我建议检查
myconfig
文件夹的权限。确保允许所有用户访问和读取('x'和'r')


如果权限不正确,请使用
chmod a+xr myconfig/
chmod a+r myconfig/nginx.conf

对其进行设置。它现在对我有效,我无法再重现错误,也无法检查权限,因为我已经删除了文件夹。所以我们永远都不会知道我真正的问题是什么,不管怎样,你的回答对别人还是有帮助的,所以我接受了。