问答详情
源自:3-2 dockerfile实战

index.html文件内容与实际访问结果不同

https://img1.mukewang.com/5c0652070001130707470622.jpg

进入容器内部查看index.html文件已经改成“docker”了,为何访问还是显示“nginx”?https://img2.mukewang.com/5c0652600001d5c709200522.jpg

提问者:天上小月牙 2018-12-04 18:11

个回答

  • 天上小月牙
    2018-12-19 17:34:53

    进入容器内部后,通过nginx -V命令,查到nginx.conf文件路径:

    https://img2.mukewang.com/5c1a084200019a0014640272.jpg

    通过vim /etc/nginx/nginx.conf命令查看该文件,发现http模块中并没有server模块,但是发现有一行:

    https://img2.mukewang.com/5c1a09040001feb704800062.jpg

    通过cd /etc/nginx/sites-enabled/命令查看:

    https://img3.mukewang.com/5c1a093f0001daeb10460122.jpg

    通过vim /etc/nginx/sites-available/default命令打开该文件,看到了server模块和默认页面读取的路径和文件:

    https://img3.mukewang.com/5c1a09d30001d61a07990532.jpg

    于是切换至/var/www/html目录:

    https://img4.mukewang.com/5c1a0ae40001b36f08280103.jpg

    发现默认页面读取的就是这个index.nginx-debian.html文件,打开:

    https://img2.mukewang.com/5c1a0ba200017bc406980510.jpg

    而我的Dockerfile是这么写的:

    https://img2.mukewang.com/5c1a0bd70001677406530177.jpg

    COPY index.html /usr/share/nginx/html(此处想当然了,然而经过上述分析,默认页面读取的html文件根本不是/usr/share/nginx/html目录下的index.html!)

    因此在Dockerfile文件中应该写COPY index.html /var/www/html,也就是和老师视频中所写的一样,我之所以会写COPY index.html /usr/share/nginx/html,是因为老师提到这个目录因人而异,因此我通过find / -name "index.html"命令找到了/usr/share/nginx/html/index.html,想当然的改动了这个文件,而nginx根本不读取它。

  • xf_joke
    2018-12-12 22:24:18

    应该是文件路径不对了,根本没有访问到你改的文件。