Docker-compose实战——Django+PostgreSQL
今天我們來用docker-compose 快速安裝一個Django+PostgreSQL的開發(fā)環(huán)境。
?
Compose簡介
Compose 定位是“defining and running complex applications with Docker”,前身是 Fig,兼容 Fig 的模板文件。
Dockerfile 可以讓用戶管理一個單獨的應(yīng)用容器;而 Compose 則允許用戶在一個模板(YAML 格式)中定義一組相關(guān)聯(lián)的應(yīng)用容器(被稱為一個?project,即項目),例如一個 Web 服務(wù)容器再加上后端的數(shù)據(jù)庫服務(wù)容器等。
該項目由 Python 編寫,實際上調(diào)用了 Docker 提供的 API 來實現(xiàn)。
安裝docker-compose請戳這里,安裝好后就讓我們一起開始吧!
?
一、定義項目組件
1.1 創(chuàng)建一個空的項目目錄
[root@localhost sparks]# mkdir django_test
1.2 在你的項目目錄下創(chuàng)建一個名為Dockerfile文件
Docker 可以通過 Dockerfile 的內(nèi)容來自動構(gòu)建鏡像。Dockerfile 是一個包含創(chuàng)建鏡像所有命令的文本文件,通過docker build命令可以根據(jù) Dockerfile 的內(nèi)容構(gòu)建鏡像,在介紹如何構(gòu)建之前先介紹下 Dockerfile 的基本語法結(jié)構(gòu)。
想要了解更多 官方文檔
?
1.3 添加如下的內(nèi)容到Dockerfile
FROM python:3 ENV PYTHONUNBUFFERED 1RUN mkdir /codeWORKDIR /codeADD requirements.txt /code/RUN pip install -r requirements.txtADD . /code/這個dockerfile文件開始于python3基礎(chǔ)鏡像,創(chuàng)建并移動工作目錄至code目錄,將requirements.txt添加到code目錄中,并用pip命令安裝該文件中的依賴包。
?
1.4 在你的項目目錄下創(chuàng)建并添加如下內(nèi)容至requirements.txt
Django>=1.8,<2.0psycopg2
1.5?在你的項目目錄下創(chuàng)建并添加如下內(nèi)容至docker-compose.yml
version: '3'services:db:image: postgresweb:build: .command: python3 manage.py runserver 0.0.0.0:8000volumes:- .:/codeports:- "8000:8000"depends_on:- db這個文件定義了兩個服務(wù),數(shù)據(jù)庫(db)服務(wù)和web服務(wù), 想要了解更多請點擊這里
?
二、創(chuàng)建Django項目
在這一步,用之前步驟創(chuàng)建的文件制作鏡像并用這個鏡像來創(chuàng)建Django項目
2.1 ?轉(zhuǎn)至項目根目錄,運行如下命令來創(chuàng)建Django項目
sudo docker-compose run web django-admin.py startproject composeexample .這里django-admin.py startproject composeexample需要使用web服務(wù)的鏡像和配置,但是web鏡像目前并不存在,所以compose自動在當(dāng)前目錄下尋找和創(chuàng)建該服務(wù),
具體可以參見docker-compose.yml中?build: . 這一行。
一旦web服務(wù)鏡像被創(chuàng)建,就在該容器中運行django-admin.py startproject 來創(chuàng)建Django項目
?
2.2 在上面的命令執(zhí)行完后,查看你的項目目錄文件
$ ls -ldrwxr-xr-x 2 root root composeexample-rw-rw-r-- 1 user user docker-compose.yml-rw-rw-r-- 1 user user Dockerfile-rwxr-xr-x 1 root root manage.py-rw-rw-r-- 1 user user requirements.txt如果你是在linux上運行docker,manage.py文件屬于root創(chuàng)建,因為在容器內(nèi)運行都是用root用戶,可以通過如下命令改變權(quán)限
sudo chown -R $USER:$USER .
三、連接數(shù)據(jù)庫
在這一部分,我們將創(chuàng)建數(shù)據(jù)庫并連接Django
3.1 在你的項目目錄下,編輯composeexample/settings.py文件
3.2 將文件中DATABASES = ...替換為如下內(nèi)容
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': 'postgres','USER': 'postgres','HOST': 'db','PORT': 5432,} }?
3.3 運行命令在你的項目根目錄下
$ docker-compose up djangosample_db_1 is up-to-date Creating djangosample_web_1 ... Creating djangosample_web_1 ... done Attaching to djangosample_db_1, djangosample_web_1 db_1 | The files belonging to this database system will be owned by user "postgres". db_1 | This user must also own the server process. db_1 | db_1 | The database cluster will be initialized with locale "en_US.utf8". db_1 | The default database encoding has accordingly been set to "UTF8". db_1 | The default text search configuration will be set to "english".. . .web_1 | May 30, 2017 - 21:44:49 web_1 | Django version 1.11.1, using settings 'composeexample.settings' web_1 | Starting development server at http://0.0.0.0:8000/ web_1 | Quit the server with CONTROL-C.到了這里,你的Django應(yīng)用已經(jīng)運行在docker主機的8000端口上啦,使用瀏覽器輸入http://localhost:8000就可以看到Django的歡迎界面啦
?
3.4 查看正在運行的容器
在另一個終端上,你可以通過 docker ps 命令查看正在運行的容器
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES def85eff5f51 django_web "python3 manage.py..." 10 minutes ago Up 9 minutes 0.0.0.0:8000->8000/tcp django_web_1 678ce61c79cc postgres "docker-entrypoint..." 20 minutes ago Up 9 minutes 5432/tcp django_db_1一個web容器,一個postgre容器都在后臺運行中,至此我們已經(jīng)大功告成啦!
轉(zhuǎn)載于:https://www.cnblogs.com/LiCheng-/p/6963779.html
總結(jié)
以上是生活随笔為你收集整理的Docker-compose实战——Django+PostgreSQL的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ace admin日期控件 中文显示
- 下一篇: 程序媛计划——mysql连接表