Docker卷没有绑定

时间:2018-02-02 14:04:50

标签: docker nginx docker-compose dockerfile docker-volume

我一直在解决这个问题,看起来很简单,但我无法弄清楚我做错了什么。

我正在尝试设置一个nginx容器,它在不同的端口上提供一些动态html报告。为此,我尝试将包含html文件的卷绑定到正确的位置。

docker-compose文件如下所示:

version: '3'

services:
  report-host:
    build: ./host
    image: host:latest
    network_mode: 'host'
    ports:
      - "5000:5000"
      - "5001:5001"
    volumes:
      - ./5000/:/var/www/port5000/
      - ./5001/:/var/www/port5001/
    command: nginx -g "daemon off;"

5000和5001目录与docker-compose文件位于同一目录中,并且都包含index.html文件。

构建主机映像的dockerfile非常简单:

FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf

# Create the volume directories
RUN mkdir -p /var/www/port5000/ && mkdir -p /var/www/port5001/

最后,conf文件是准系统,因为它确实不需要任何特殊的

events {
    worker_connections  1024;
}

http {
    server {
        listen       5000;
        root         /var/www/port5000/;
    }

    server {
        listen       5001;
        root         /var/www/port5001/;
    }
}

但是,当我运行docker-compose run report-host ls var/www/port5000时,目录存在但只是空的。打开localhost:5000时,它只给我一个页面未找到的消息。

为什么在这种情况下卷不绑定?我有其他几个完全相同的项目,它们正确绑定...

更新:我正在搞乱一些,在某些时候,port5000文件夹现在有一个在我的卷中的子文件夹,但它仍然是空的。另一个文件夹具有相同的结构,但该卷不包含子文件夹。我开始认为发生了一些完全疯狂的事情,我将尝试完全卸载docker,然后重新安装以尝试解决问题。

1 个答案:

答案 0 :(得分:0)

我几天前更改了密码,显然这是问题所在。我更新了Docker for Windows Shared Drives菜单中的凭据,该文件可以正确显示文件。

感谢@larsks让我走上解决问题的道路。