flask - 为什么每次当我workdir所对应的文件的内容发生变化,要重新build images,然后生成container才会生效
大家讲道理
大家讲道理 2017-04-24 09:10:59
0
3
523

dockerfile没有改变,只是workdir所对应的容器外部的文件发生了改变

  1. 请问这是必须的么,如果是这样的话,是要用docker compose-up 自动简化这个过程?

  2. 如果不是必须的话,因为我的dockerfile的问题么?
    dockerfile如下:

    FROM ubuntu
    MAINTAINER Tarty.Phoenix <tartyphoenix@gmail.com>
    RUN apt-get update
    RUN apt-get install -y -q python-all python-pip libffi-dev
    RUN apt-get install -y -q python-dev build-essential
    ADD ./flask_pure/requirements.txt /tmp/requirements.txt
    RUN pip install -qr /tmp/requirements.txt
    
    ADD ./flask_pure /opt/flask_pure/
    WORKDIR /opt/flask_pure
    
    EXPOSE 80
    CMD ["python", "manage.py", "runserver"]
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(3)
巴扎黑
  1. 首先 workdir 代表的目錄是容器裡面的目錄,不是 host 的。

  2. 下面的內容變化需要重新 build image

    • dockerfile 本身變化

    • COPY / ADD 指令的 source 檔案變化

  3. docker-compose 支援運行的時候重新 build image 的

    service:
        - build: <image_base_dir>
刘奇

你的問題中,有一點要跟你解釋。
透過建立和編輯dockerfile檔案後,build建立一個image(映像),而後run一個image產生一個container(容器),那麼image和container是一一對應的關係了。那麼當你編輯dockerfile檔案改變workdir後,再去創建的container當然就是預設進入了新的workdir。因此你的問題的標題所描述的應該不是一個問題,而是正確的邏輯描述。

迷茫

你對docker的理解錯了,你這麼做只是把某個資料夾的內容打包進鏡像。
建議你了解docker中的VOLUME磁碟區的概念,只有透過容器啟動時指定-v參數或在docker-compose.yml中指定VOLUME參數才能實現容器掛載本機目錄。

那麼如何區分是否需要容器掛載本地目錄,我的理解是處於開發狀態還是生產狀態。
如果處於開發狀態,則程式碼需要頻繁變動,那麼每修改一次程式碼都需要重新打包進鏡像是很難接受的。
如果處於生產狀態,想像一下Docker Hub上提供那麼多的鏡像吧,如果這些鏡像都提供你一個安裝環境和源代碼,然後你需要手動指定VOLUME把源代碼目錄掛載進去,再然後啟動容器就會進行編譯安裝,你會覺得這個的體驗怎麼樣?

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!