一、單獨使用docker container部署
1.首先我們開始編寫dockerfile, 我可以通過dockerfile生成image,在生成container
FROM python:3.6 # 源鏡像
ENV DJANGO_DEBUG=True # 設(shè)置環(huán)境變量, 項目中為了安全一些關(guān)鍵的配置項沒有卸載settings中,而是通過環(huán)境變量獲取的
ENV PYTHONIOENCODING=utf-8?
env TZ='Asia/Shanghai'? # env和ENV是同一個
run mkdir /logs? # 創(chuàng)建logs日志文件夾
WORKDIR /code? # 創(chuàng)建項目的文件夾
ADD project /code #? 將項目project拷貝到image中code文件夾
RUN pip install? -r requirements/deploy.txt # run安裝python依賴包
EXPOSE 8000 # 指定開發(fā)端口
ENV NAME iam? # 設(shè)置環(huán)境變量
CMD python manage.py runserver 0.0.0.0:8000 # 運行服務(wù)
2.在寫好dockerfile文件之后,我們就可以構(gòu)建image了
docker build -t pr1 .
這樣我們就構(gòu)建一個名為pr鏡像, 使用docker images就可在鏡像列表中查看了

然后我就可以跑個容器了,我將這個container命名為pr
docker run -d -p 0.0.0.0:8007:8000 --name=pr1 pre

我可是看看服務(wù)有沒有啟動, 打開http://localhost:8007/admin/查看后臺是否正常

使用docker log 可以查看運行情況
docker log 93ccfe3094e90078606542f6e0e603b14e728a2575a9d4c3072c0769765ac274
同時我們可以使用docker exec 進入容器

同時我們查看了python運行的進程
二、使用docker-compose編排工具
1.我們?nèi)孕枰狣ockerfile, 在Dockerfile所在的新增docker-compose.yml, 內(nèi)容也挺簡單
version: '3'
services:
web:
? ? build: .
ports:
? ? -"5002:8000"
? ? network_mode: "bridge"
然后我們使用
docker-compose build
這里會生成一個以當(dāng)前文件夾為前綴的image

接下來我們使用
docker-compose up -d

我們看一下啟動的容器

在訪問以下后臺

這里要說一下遇到的坑:
1.一開始并未加入network_mode模式,導(dǎo)致每次build之后會產(chǎn)生一個新的network局域網(wǎng)

而數(shù)據(jù)庫在bridge這個局域網(wǎng)中,導(dǎo)致無法訪問數(shù)據(jù)庫
我們先來看一下生成局域網(wǎng)的信息,使用docker network inspect命令

這個所在ip段是“172.22”, 然后我們在看看數(shù)據(jù)庫所在容器的IP段bridge

由于太長我截取了部分,這個局域網(wǎng)說在IP段是“172.17”, 同時也能看出這個containers中包含了我們生成pr_docker_web_1容器
還要說的是bridge是自動生成局域網(wǎng)
我們在文件里寫bridge是‘?network_mode: "bridge"’是網(wǎng)絡(luò)模式, 為容器選擇什么樣的網(wǎng)絡(luò)模式,下面是官網(wǎng)的說明
