# 用docker把django包起來 ###### tags: `docker`、`django`、`python` ## 簡單步驟 ### <kbd>Step1</kbd> 建立django專案 你可以直接拿要準備上去的django專案,或是直接新增一個。 相信各位是專業django大腿才看到這邊,所以我就省略了。 ~~絕對不是因為我忙沒時間寫這段~~ ### <kbd>Step2</kbd> 新增dockerfile 接著來新增dockerfile,這邊就放在django的根目錄來動,先新增`dockerfile`檔案後用編輯器開啟,內容大概長這樣 ```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/ ``` ### <kbd>Step3</kbd> 新增docker-compose.yml 完成dockerfile之後接著新增docker-compose的部分,主要也是因為要開啟多個容器還是用docker-compose比較穩。 在那之前先看看有沒有docker-compose,來用這句話檢查一下。 ```bash= $ 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 ``` 若你發現你的電腦沒有,下面三個步驟讓你安心上工 ```bash= # 給他抓下來 $ 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`檔案吧。 ```dockerfile= 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" ``` ### <kbd>Step4</kbd> 執行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 ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up