需要解決的主要問題:如何在宿主機修改**,在容器中實時重新整理**效果。
解決方案就是volume,掛載。具體操作方式也有多種,本文通過編寫compose檔案的方式來實現掛載。
筆者使用docker的思想是:映象作為材料,compose作為藍圖,通過修改藍圖來生成分別適用於開發、測試、生產環境的容器。
映象是乙個相對比較固定的部分。
具體實踐是:dockerfile來生成映象,映象包含執行時的必要條件(庫依賴、原始碼之類)。compose來決定執行時的環境(容器連線、掛載、環境變數等)。
以flask專案為例。
新建乙個目錄叫 flask-demo, 這個目錄將存放我們的專案原始碼和dockerfile檔案。
$ mkdir flask-demo
$ cd flask-demo
在flask-demo裡建立乙個目錄叫hello,並建立flask專案放於該目錄。
現在的目錄結構是這樣的
flask-demo
- hello # 這裡就是flask專案
- .....
from flask import flask
def hello_world():
return 'hello world!'
if __name__ == '__main__':
建立乙個映象,該映象包含web原始碼和web的依賴。
在flask-demo目錄裡,建立dockerfile檔案
dockerfile
from python
run apt-get update
run pip install flask
expose 80
生成映象
# build乙個名為flask-demo的映象
$ docker build -t flask-demo ./
# 執行flask-demo映象. 將宿主機的5000埠對映到容器的80埠
$ docker run -p 5000:80 flask-demo
現在,瀏覽器輸入 http://localhost:5000 就可以看到正常執行的網頁了。
那麼,證明我們的映象是ok的了。
但是,現在宿主機修改**,容器是不會重新整理的,因為容器裡面的**只是乙份拷貝。
現在,我們來編寫compose檔案
還是在flask-demo目錄裡,新建檔案docker-compose.yml
docker-compose.yml
version: "3"
services:
flask-demo:
build: ./
ports:
- "5000:80"
volumes:
environment:
- flask_env=development # 指定開發環境,修改**會實時重新整理專案
(如果dockerfile和docker-compose.yml有相同的字段配置,那麼會優先採用docker-compose.yml的配置。)
現在來測試一下我們的compose檔案。
【記得把剛才執行的容器停止了】
執行以下命令來執行容器
$ docker-compose up
現在,瀏覽器輸入 http://localhost:5000 就看到正常執行的網頁了。 使用Docker如何搭建Web漏洞測試環境?
本文和大家分享的是使用 docker 搭建web漏洞測試環境 學習docker 這些漏洞環境一般搭建比較繁瑣,而且出問題後有不能像 git 那樣方便的 回滾 操作,當然你可以使用 esxi 來管理,不過虛擬機器仍然會存在定期快照 回滾操作較長等繁重操作。那有沒有輕量級的能夠快速搭建 web 漏洞的測...
使用Docker快速搭建Kafka開發環境
1 zookeeper 1 kafka 這裡以我自己最常用的wurstmeister kafka為例,使用docker compose執行乙個只有乙個zookeeper node和乙個kafka broker的開發環境 version 2 services zoo1 image wurstmeist...
Mac系統上用Docker搭建lamp環境
前言 docker終於出來mac版本了,趕緊去 安裝步驟,以前沒有mac版本的時候還要裝docker toolbox,現在直接 安裝就好了。安裝好了的樣子 狀態列docker的提示 這個時候就可以到終端裡面輸入docker命令 docker version docker version 1.13.0...