我有一个django应用,我正在进行dockerizing。下面是docker-compose.yml文件
nginx:
image: nginx:alpine
container_name: ng01
restart: always
ports:
- "443:443"
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- ./webapp/static:/static
- ./certs:/etc/ssl
web:
build: .
command: python ./webapp/server.py
restart: always
volumes:
- .:/code
- ./webapp/static:/static
networks:
- nginx_network
- couchserver_network
- dummyapi_flaskapp_network
当我从其运行位置更改主机目录的名称时,出现以下错误:python:无法打开文件'./webapp/server.py':[Errno 2]没有此类文件或目录
我已使用以下命令将主机目录复制到映像:
RUN mkdir /code
WORKDIR /code
COPY . /code/
因此,在重命名主机目录后,为什么python无法找到server.py文件,因为它在容器 code 目录中可用。
我是Docker的新手,对卷的了解很少或没有。任何帮助都非常感谢。如何在不能使用主机目录的另一台计算机上运行此计算机。
更新:从Web上删除了卷,并且工作正常。但是从nginx中删除卷会引发“无法访问此网站”错误
答案 0 :(得分:1)
在容器启动时,声明的卷将覆盖图像的内容。在映像中复制文件时,应删除它们(最好这样做,否则您需要在运行容器的每个主机中都有该文件)。
web:
build: .
command: python ./webapp/server.py
restart: always
networks:
- nginx_network
- couchserver_network
- dummyapi_flaskapp_network
用于NGINX的简单Dockerfile,您不需要在基础映像中已经定义的入口点:
FROM nginx:alpine
RUN mkdir /static
COPY ./webapp/static/ /static/