docker - Docker - 没有这样的文件或目录。复制不会复制所有文件
问题描述
Dockerfile 不会完全复制本地目录中的所有文件。我不明白他为什么从后端复制文件夹,但它没有所有文件。感谢帮助..
结构体:
docker/
django/
/Dockerfile
/backend/
requirements.txt
src/
angular4/
/Dockerfile
/client
docker-compose.yml
码头工人-compose.yml
version: '3'
services:
db:
image: postgres:9.6
hostname: db
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: alinta
ports:
- "5432:5432"
backend:
build: ./django
image: alinta
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/var/www/alinta/
ports:
- "8000:8000"
depends_on:
- db
migration:
image: alinta
command: python3 manage.py migrate --noinput
volumes:
- .:/var/www/alinta/
depends_on:
- db
frontend:
build: ./angular4
volumes:
- .:/var/www/alinta
ports:
- "4200:4200"
Dockerfile (django):
FROM postgres:9.6
RUN apt-get update && apt-get install -q -y postgresql-9.6 postgresql-client-9.6 postgresql-contrib-9.6 postgresql-client-common postgresql-common
#RUN echo postgres:postgres | chpasswd
#RUN pg_createcluster 9.6 main --start
#RUN /etc/init.d/postgresql start
FROM python:3.7
MAINTAINER Nikita Alekseev <nik_alekseev@outlook.com>
# Alinta
# Version: 1.0
# Install Python and Package Libraries
RUN apt-get update && apt-get upgrade -y && apt-get autoremove && apt-get autoclean
RUN apt-get install -y \
libffi-dev \
libssl-dev \
libxml2-dev \
libxslt-dev \
libjpeg-dev \
libfreetype6-dev \
zlib1g-dev \
net-tools \
vim
RUN apt-get install -y \
python3-pip \
python3-dev \
python3-virtualenv \
libpq-dev \
postgresql \
postgresql-contrib \
nginx \
curl
RUN pip3 install virtualenv
# Project Files and Settings
ARG PROJECT=alinta
ARG PROJECT_DIR=/var/www/${PROJECT}
RUN mkdir -p $PROJECT_DIR/backend/src
RUN mkdir -p $PROJECT_DIR/backend/src/static
RUN mkdir -p $PROJECT_DIR/backend/src/media
#WORKDIR $PROJECT_DIR
COPY ./backend /var/www/alinta/
WORKDIR $PROJECT_DIR/backend
RUN virtualenv -p python3.7 --no-site-packages env
RUN /bin/bash -c "source env/bin/activate"
RUN pip3 install -r requirements.txt
WORKDIR $PROJECT_DIR/backend/src
EXPOSE 8000
docker-compose build
错误:无法打开需求文件:[Errno 2] 没有这样的文件或目录:'requirements.txt'
解决方案
对于您的Dockerfile,您的 requirements.txt 位于后端目录中,并且不在同一级别,因此添加或复制它会使其可见:
所以添加:
ADD ./backend/requirements.txt requirements.txt
或者
COPY ./backend/requirements.txt requirements.txt
在你跑步之前
RUN pip3 install -r requirements.txt
只需将后端目录复制为:
COPY ./backend /var/www/alinta/
不会让 Docker 知道你的requrements.txt的上下文。使用ADD
orCOPY
将指示 Docker 如何定位文件。
推荐阅读
- emacs - Doom Emacs:不想在 Slime-REPL 中自动完成
- swiftui - SwiftUI如何在不切换标签栏的情况下刷新一个标签视图
- android - google-cloud-speech 中的依赖冲突
- java - 附加错误从哪里来?
- javascript - 查找具有相同 prop 的对象并返回更新值及其关联的 prop
- php - Lumen 8.x 文件系统不工作。错误:未找到“League\Flysystem\AwsS3v3\AwsS3Adapter”类
- mysql - 如何使用 mysql 函数从 sting 中获取 id?
- c++ - 在 C++ 中,从大型文本文件集合中读取所有单词的最快方法是什么?
- javascript - react-bootstrap/Image 不加载 imgURL
- botframework - Azure 上 OAuth 连接设置中的 Microsoft 示例 52 和 AAD ConnectionName