docker部署django項目(實測有效)

花了一點時間看了一下docker部署django項目,特此記錄

臨時創建個django項目以做測試,django-admin startproject docker_test,項目名:docker_test,然後隨便寫個測試函數

整體的目錄結構如下:

首先創建一個Dockerfile文件(沒有後綴名)
Dockerfile 是一個文本文件,其內包含了一條條的指令(Instruction),每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。有了 Dockerfile,就可以創建我們所需要的鏡像

Dockerfile文件內容如下:

#基於的基礎鏡像
FROM python:3.5

#代碼添加到code文件夾
ADD ./package /code

# 設置code文件夾是工作目錄
WORKDIR /code

# 安裝支持
RUN pip install -i https://pypi.doubanio.com/simple/ -r requirements.txt

CMD ["python", "/code/docker_test/run.py"]

requirements.txt的生成方法

第一種 適用於 單虛擬環境的情況: :

1

pip freeze > requirements.txt

爲什麼只適用於單虛擬環境?因爲這種方式,會將環境中的依賴包全都加入,如果使用的全局環境,則下載的所有包都會在裏面,不管是不時當前項目依賴的

第二種 (推薦) 使用 pipreqs ,github地址爲: https://github.com/bndr/pipreqs

1

2

3

4

# 安裝

pip install pipreqs

# 在當前目錄生成

pipreqs . --encoding=utf8 --force

注意 --encoding=utf8 爲使用utf8編碼,不然可能會報UnicodeDecodeError: 'gbk' codec can't decode byte 0xae in position 406: illegal multibyte sequence 的錯誤。

--force 強制執行,當 生成目錄下的requirements.txt存在時覆蓋

requirements.txt 文件裏是python項目所需要的第三方庫,內容如下

django==1.8.7
numpy
pandas

創建鏡像 

docker build -t test_docker .

查看鏡像

docker images

運行鏡像,生成並啓動容器

docker run -it -p 8000:8000 --name test-docker test_docker

-it:表示交互式終端的容器,非啓動後立刻結束的容器

-p 8000:8000:表示將docker的8000端口,映射到Linux的8000端口

--name test-docker:給容器取個名字,嫌麻煩可以省去

test_docker:容器是用哪個鏡像啓動的(一個容器,必須依賴一個鏡像啓動)

瀏覽器輸入ip+port+url即可查看

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章