Docker下使用Compose部署Python框架Django

timg.jpg

Django是一個(gè)開源代碼的Web應(yīng)用框架,由Python寫成。
首先創(chuàng)建一個(gè)空的文件夾,文件名稱默認(rèn)就是項(xiàng)目名稱,取名為pweb,然后在文件夾里面新建一個(gè)Dockerfile文件,用于構(gòu)建Django應(yīng)用的鏡像。首先需要一個(gè)Python基礎(chǔ)鏡像作為基礎(chǔ)開發(fā)環(huán)境,這里選擇Python3.7。

FROM python:3.7
ENV PYTHONUNBUFFERED 1er
RUN mkdir /code
COPY requirements.txt /code/
WORKDIR /code
RUN pip install -r requiements.txt
ADD .  /code/er

保存Dockerfile之后,需要根據(jù)依賴編寫requirements.txt文件,依賴不多,就只有兩個(gè):

Django
psycopg2

保存requirements.txt文件,然后一個(gè)Django鏡像的基本材料就齊了。
就剩下一份docker-compose.yml來編排整個(gè)過程,因此新建docker-comerpose.yml文件,定義兩個(gè)服務(wù),一個(gè)是數(shù)據(jù)庫(kù)(db),另一個(gè)是Django應(yīng)用(app),數(shù)據(jù)庫(kù)選擇postgres,應(yīng)用基于上面的Dockerfile構(gòu)建。

version: '2'
services:
  db:
    image: postgres
  app:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db

保存dicker_compose.yml文件,現(xiàn)在已經(jīng)完成了關(guān)于Compose的定義工作,接下來就是利用Compose生成一個(gè)Django項(xiàng)目。

PS G:\pweb> docker-compose run app django-admin.py startproject compose_example .

執(zhí)行之后查看項(xiàng)目文件夾,可以看到基本項(xiàng)目已經(jīng)創(chuàng)建完成。

PS G:\pweb> ls
    目錄: G:\pweb
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        2019/8/23     18:23                compose_example
-a----        2019/8/23     17:49            220 docker-compose.yml
-a----        2019/8/23     18:06            150 Dockerfile
-a----        2019/8/23     18:23            813 manage.py
-a----        2019/8/23     18:03             26 requirements.txt

現(xiàn)在項(xiàng)目已經(jīng)創(chuàng)建,然后就需要配置數(shù)據(jù)庫(kù)了,打開compose_example/setting.py文件,修改DATABASES = ...的內(nèi)容如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgressql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'HOST': 'db',
        'PORT': 5432,
    }
}

完成上面步驟后,就已經(jīng)完成全部運(yùn)行前的工作了。
接著啟動(dòng)項(xiàng)目,Compose會(huì)啟動(dòng)兩個(gè)容器并連接它們:

PS G:\pweb> docker-compose up
Starting pweb_db_1 ... done
Starting pweb_app_1 ... done                                                                                            
Attaching to pweb_db_1, pweb_app_1
db_1   | 2019-08-23 10:35:39.932 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
db_1   | 2019-08-23 10:35:39.932 UTC [1] LOG:  listening on IPv6 address "::", port 5432
db_1   | 2019-08-23 10:35:39.940 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
db_1   | 2019-08-23 10:35:39.964 UTC [25] LOG:  database system was shut down at 2019-08-23 10:35:34 UTC
db_1   | 2019-08-23 10:35:39.973 UTC [1] LOG:  database system is ready to accept connections
app_1  | Performing system checks...
app_1  |
app_1  | System check identified no issues (0 silenced).
app_1  |
app_1  | You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
app_1  | Run 'python manage.py migrate' to apply them.
app_1  | August 23, 2019 - 10:35:41
app_1  | Django version 1.11.23, using settings 'compose_example.settings'
app_1  | Starting development server at http://0.0.0.0:8000/
app_1  | Quit the server with CONTROL-C.
app_1  | [23/Aug/2019 10:36:26] "GET / HTTP/1.1" 200 1716
app_1  | Not Found: /favicon.ico
app_1  | [23/Aug/2019 10:36:26] "GET /favicon.ico HTTP/1.1" 404 1971

打開瀏覽器,輸入地址 http://localhost:8000/,不出意外的話,可以看到如圖所示的成功部署的頁(yè)面。

TIM圖片20190823184010.png

到這里,就部署結(jié)束了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容