Try   HackMD

用docker把django包起來

tags: dockerdjangopython

簡單步驟

Step1 建立django專案

你可以直接拿要準備上去的django專案,或是直接新增一個。
相信各位是專業django大腿才看到這邊,所以我就省略了。

絕對不是因為我忙沒時間寫這段

Step2 新增dockerfile

接著來新增dockerfile,這邊就放在django的根目錄來動,先新增dockerfile檔案後用編輯器開啟,內容大概長這樣

# 確定python版本來讓docker建立時載入 FROM python:3.7.4 # --- 在這邊設定和python有關的環境變數 --- # 是否啟用緩衝載入 ENV PYTHONUNBUFFERED 1 # =================================== # 建立資料夾作為部署用容器 RUN mkdir /code # 指定資料夾為部署docker工作用 WORKDIR /code # 更新 pip RUN pip install pip -U # 把 requirements.txt 檔案複製進容器裡 ADD requirements.txt /code/ # 在容器裡安裝plugin建立環境 RUN pip install -r requirements.txt # 把寫完的django project整包帶進去容器裡 ADD . /code/

Step3 新增docker-compose.yml

完成dockerfile之後接著新增docker-compose的部分,主要也是因為要開啟多個容器還是用docker-compose比較穩。

在那之前先看看有沒有docker-compose,來用這句話檢查一下。

$ docker-compose --version # 有的人看到的 docker-compose version 1.25.5, build 8a1c60f6 # 麻瓜(X)沒有的人(O)看到的 /usr/local/bin/docker-compose: line 1: {error:Not Found}: command not found

若你發現你的電腦沒有,下面三個步驟讓你安心上工

# 給他抓下來 $ curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 調整權限 chmod +x /usr/local/bin/docker-compose # 再確認一次 $ docker-compose --version

安裝完成後讓我們新增docker-compose.yml檔案吧。

version: "3" services: django_web: restart: always build: . #現在位置 command: "python3 manage.py runserver 0.0.0.0:15000" #port可以自己橋 volumes: - .:/code ports: - "15000:15000" #port可以自己橋 "內部port:外部port"

Step4 執行docker

直接輸入下方指令,一切就完成了。
快打開 docker ps -a 看看,當你看到其中STATUS上面寫的是 Up __ time 就可以輸入 自己的IP:port 進去看看結果了

CONTAINER ID        IMAGE          COMMAND                  CREATED             STATUS               PORTS                      NAMES
735b87ad7732        django_web     "python3 manage.py r…"   34 minutes ago      Up 32 minutes        0.0.0.0:15000->15000/tcp   django_web_1