更改主机目录后,Docker容器无法启动

时间:2020-08-30 08:23:32

标签: django docker

我有一个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中删除卷会引发“无法访问此网站”错误

1 个答案:

答案 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/