[英]Transfering local files to docker container - docker COPY not updating with new files in directory
我從托管 Django 應用程序的同一台服務器托管媒體文件。有時我需要添加更多文件以從應用程序提供服務,例如圖像。
我已經設置了 NGINX 在我的 docker 容器內名為 /mediafiles 的目錄中提供我所有的媒體文件,這是用戶上傳的所有圖像所在的同一個地方。
我想要做的是將一些文件添加到我的存儲庫中,並將這些文件復制到容器中的 /mediafiles 中,並且能夠通過應用程序(在本地運行時)或 NGINX(在我的服務器中運行時)訪問它們。
但是,我遇到了一些問題。 我在 Dockerfile 中嘗試了以下行:
COPY ./reponame/mediafiles $APP_HOME/mediafiles
哪個有效,但只有在我運行之后:
docker system prune --volumes
這不是我可以在服務器上做的事情,因為這是所有用戶上傳圖像的位置。 我知道這不是最佳設置,因為您應該為用戶媒體使用外部文件存儲,但這是我目前可以在我的項目上花費的,並且還沒有找到低於 10 美元的好的存儲解決方案每月。
我已經嘗試運行以下命令來不必執行完整的系統修剪,但沒有任何成功 - Docker 無法識別本地添加/刪除的文件來更新容器。
docker-compose up --build --force-recreate
docker-compose build --no-cache
docker-compose up --build
docker builder prune
我還考慮將我的本地“媒體文件”安裝到 docker-compose 文件中的容器中,但這不起作用並且不是我理解的建議,因為我理解的是覆蓋容器中文件的沖突,即像這樣:
- ./reponame/mediafiles:/home/kontorshund/web/mediafiles
所以我對如何解決這個問題有點不了解,非常感謝對如何解決這個問題的 Docker 機制有更多了解的人。
全 Dockerfile
# pull official base image
FROM python:3.9.6
# set work directory
WORKDIR /usr/src/reponame
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
# create the appropriate directories
RUN mkdir -p /home/reponame
ENV HOME=/home/reponame
ENV APP_HOME=/home/reponame/web
RUN mkdir $APP_HOME
RUN mkdir $APP_HOME/staticfiles
RUN mkdir $APP_HOME/mediafiles
WORKDIR $APP_HOME
COPY ./reponame/mediafiles $APP_HOME/mediafiles
COPY . $APP_HOME
完整的 docker-compose 文件
version: '3.8'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/home/reponame/web
- static_volume:/home/reponame/web/staticfiles
- media_volume:/home/reponame/web/mediafiles
ports:
- 8000:8000
env_file:
- ./.env.dev
volumes:
static_volume:
media_volume:
好吧,沒關系。 現在,當我嘗試以下操作時,它工作正常,不知道我第一次做錯了什么......,
version: '3.8'
services:
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/home/reponame/web
- static_volume:/home/reponame/web/staticfiles
- ./mediafiles:/home/reponame/web/mediafiles
#- media_volume:/home/reponame/web/mediafiles
ports:
- 8000:8000
env_file:
- ./.env.dev
volumes:
static_volume:
media_volume:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.