如何在檔案更改時重建Docker容器?
Docker 是一款廣泛使用的容器化解決方案,允許程式設計師輕鬆地打包和分發軟體,使其輕量級且可移植。在修改檔案後重建容器的能力是Docker的關鍵特性之一。這對於許多事情都非常有用,例如確保程式碼更改正確反映在開發環境中,或確保程式碼更新始終反映在容器化應用程式中。
在本文中,我們將深入探討Docker的這一關鍵特性,並研究如何在檔案更改時重建容器。我們還將介紹一些與Docker相關的概念,並提供示例來演示在檔案更改時重建容器的過程。
讓我們瞭解一些與Docker相關的概念,以便在檔案更改時重建容器,並探討一些示例。
Docker Compose
多容器Docker應用程式是使用名為Docker Compose的工具開發和執行的。使用Docker Compose,我們可以在docker-compose.yml檔案中定義構成我們應用程式的服務,然後使用docker-compose命令來管理和協調應用程式。
這使我們能夠輕鬆地定義和執行由多個容器組成的複雜應用程式,簡化了管理和部署多容器應用程式的過程。此外,Docker Compose支援各種功能,例如環境變數替換、容器連結和卷掛載,使其成為開發和執行多容器Docker應用程式的強大而便捷的工具。
重建容器
要重建Docker容器,必須根據對容器內檔案所做的更改建立一個新的映象。這是透過使用帶有--build標誌的docker-compose up命令來完成的,該命令指示Docker重建容器並根據對檔案所做的更改建立新的映象。
重建容器可用於多種目的,例如確保程式碼更改反映在開發環境中,或確保容器化應用程式始終擁有最新更新。此外,重建容器是確保程式碼修改正確反映在生產環境中的有用方法,因為它允許我們使用最新的程式碼更改更新容器,並將更新後的容器部署到我們的生產環境。
--build標誌
使用docker-compose up命令時,--build標誌指示Docker重建容器。設定此標誌後,Docker將立即根據對容器檔案所做的任何更改重建容器。
這對於許多事情都非常有用,例如確保程式碼更新始終反映在容器化應用程式中,或確保開發環境反映程式碼更改。
示例
以下是如何在檔案更改時重建Docker容器的示例:
步驟1 - 導航到您的專案目錄:
$ mkdir directoryname $ cd directoryname
步驟2 - 在您的專案目錄中建立一個docker-compose.yml檔案(如果已存在則進行更改),並指定您要構建的服務:
version: '3' services: web: build: . command: python app.py volumes: - .:/code ports: - "5000:5000"
在這裡,我們使用python檔案app.py作為示例,但您的專案檔案可能包含不同的檔案。
我們在此示例中使用的python檔案app.py包含以下程式碼:
from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '__main__': app.run(debug=True, host='0.0.0.0')
您的專案還必須在專案目錄中有一個Dockerfile,其內容如下:
FROM python:3 COPY . /code WORKDIR /code RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"]
這裡,我們還需要專案目錄中的requirements.txt檔案(根據您的服務,您可能需要或不需要它),其內容如下:
flask
步驟3 - 我們需要執行以下命令來重新建立此docker-compose.yml檔案中指定的web服務:
$ docker-compose up --build
docker-compose up命令可以與--build標誌一起使用,以指示Docker每次執行命令時都重建容器。
輸出
[+] Running 2/2 - Network examp_default Created 0.9s - Container examp-web-1 Created 0.1s Attaching to examp-web-1 examp-web-1 | * Serving Flask app 'app' examp-web-1 | * Debug mode: on examp-web-1 | WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. examp-web-1 | * Running on all addresses (0.0.0.0) examp-web-1 | * Running on http://127.0.0.1:5000 examp-web-1 | * Running on http://172.19.0.2:5000 examp-web-1 | Press CTRL+C to quit examp-web-1 | * Restarting with stat examp-web-1 | * Debugger is active! examp-web-1 | * Debugger PIN: 630-981-535
步驟4 - 在您的瀏覽器中導航到輸出中提供的地址。
此結果表明,在重建後,web服務現在正在執行容器中修改後的程式碼。
結論
在本文中,我們瞭解到,要在檔案更改時重建Docker容器,我們需要使用帶有--build標誌的docker-compose up命令。這將使用對其中檔案所做的任何更改重建容器,並建立一個新映象。Docker Compose簡化了定義和執行多容器Docker應用程式的過程。重建容器對於確保程式碼更改得到反映以及應用程式擁有最新更新非常有用。