免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
如何使用的Django和PostgreSQL和Docker

https://wsvincent.com/django-docker-postgresql/


在本教程中,我們將使用Docker和PostgreSQL創(chuàng)建一個(gè)新的Django項(xiàng)目。Django提供內(nèi)置的SQLite支持,但即使是本地開(kāi)發(fā),最好使用像PostgreSQL這樣的“真實(shí)”數(shù)據(jù)庫(kù),它與生產(chǎn)中的內(nèi)容相匹配。

可以在本地使用類似的工具運(yùn)行PostgreSQL Postgres.app然而,許多開(kāi)發(fā)者今天的優(yōu)先選擇是使用泊塢窗,創(chuàng)建獨(dú)立的操作系統(tǒng)的工具。最簡(jiǎn)單的思考方式是作為一個(gè)包含Django項(xiàng)目所需內(nèi)容的大型虛擬環(huán)境:依賴項(xiàng),數(shù)據(jù)庫(kù),緩存服務(wù)以及所需的任何其他工具。

使用Docker的一個(gè)重要原因是它完全消除了本地開(kāi)發(fā)設(shè)置的任何問(wèn)題。您只需運(yùn)行整個(gè)項(xiàng)目的Docker鏡像,而不必?fù)?dān)心在項(xiàng)目中安裝或運(yùn)行本地?cái)?shù)據(jù)庫(kù)的軟件包。最重要的是,這可以在小組中共享,使團(tuán)隊(duì)開(kāi)發(fā)更加簡(jiǎn)單。

安裝Docker

第一步是為本地計(jì)算機(jī)安裝桌面Docker應(yīng)用程序:

Docker的初始下載可能需要一些時(shí)間才能下載。這是一個(gè)很大的檔案。此時(shí)請(qǐng)隨意伸展雙腿!

Docker完成安裝后,我們可以確認(rèn)正在運(yùn)行的版本。它至少應(yīng)該是18版。

Docker Compose是一個(gè)額外的工具,自動(dòng)包含在Docker的Mac和Windows下載中。但是,如果您使用的是Linux,則需要手動(dòng)添加它。您可以sudo pip install docker-compose在Docker安裝完成后運(yùn)行該命令來(lái)執(zhí)行此操作

Django項(xiàng)目

我們將使用留言板應(yīng)用Django的初學(xué)者。它使用可在管理員中更新的SQLite為基本留言板應(yīng)用程序提供代碼。

在桌面上創(chuàng)建一個(gè)新目錄并將repo克隆到其中。

$ cd ~/Desktop$ git clone https://github.com/wsvincent/djangoforbeginners.git$ cd djangoforbeginners$ cd ch4-message-board-app

然后安裝指定的軟件包Pipenv并啟動(dòng)一個(gè)新shell。

$ pipenv install$ pipenv shell

migrate在這些更改后確保我們的數(shù)據(jù)庫(kù)。

(mb) $ python manage.py migrate

如果您現(xiàn)在使用該python manage.py runserver命令,則可以在http:// localhost:8000上看到我們的應(yīng)用程序的工作版本

Docker(再次)

希望Docker在這一點(diǎn)上完成安裝。要確認(rèn)安裝是否成功,請(qǐng)退出本地服務(wù)器,Control+c然后docker run hello-world在命令行上鍵入。您應(yīng)該看到這樣的回復(fù):

$ docker run hello-worldUnable to find image 'hello-world:latest' locallylatest: Pulling from library/hello-worldd1725b59e92d: Pull completeDigest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788Status: Downloaded newer image for hello-world:latestHello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.    (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client,which sent it to your terminal.To try something more ambitious, you can run an Ubuntu containerwith: $ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID: https://hub.docker.com/For more examples and ideas, visit: https://docs.docker.com/get-started/

圖像和容器

Docker中有兩個(gè)重要的概念:圖像容器。

  • 圖像:項(xiàng)目中所有軟件包的說(shuō)明列表
  • 容器:圖像的運(yùn)行時(shí)實(shí)例

換句話說(shuō),圖像描述了將要發(fā)生的事情,而容器實(shí)際運(yùn)行的。

要配置Docker鏡像和容器,我們使用兩個(gè)文件:Dockerfiledocker-compose.yml。

Dockerfile包含圖像的說(shuō)明列表,也就是說(shuō),在容器的環(huán)境中實(shí)際發(fā)生了什么。

創(chuàng)建一個(gè)新Dockerfile文件。

(mb) $ touch Dockerfile

然后在文本編輯器中添加以下代碼。

# Pull base imageFROM python:3.7-slim# Set environment variblesENV PYTHONDONTWRITEBYTECODE 1ENV PYTHONUNBUFFERED 1# Set work directoryWORKDIR /code# Install dependenciesRUN pip install pipenvCOPY ./Pipfile /code/PipfileRUN pipenv install --system --skip-lock# Copy projectCOPY . /code/

在頂部,我們使用Python 3.7 官方Docker鏡像。接下來(lái)我們創(chuàng)建兩個(gè)環(huán)境變量。PYTHONUNBUFFERED確保我們的控制臺(tái)輸出看起來(lái)很熟悉,并且不被Docker緩沖,這是我們不想要的。PYTHONDONTWRITEBYTECODE意味著Python不會(huì)嘗試編寫.pyc我們也不想要的文件。

下一行設(shè)置WORKDIR/code。這意味著/code將來(lái)工作目錄位于運(yùn)行任何命令,就像manage.py我們可以使用WORKDIR而不需要記住我們的代碼實(shí)際定位在Docker上的確切位置。

然后我們安裝我們的依賴項(xiàng),確保我們有最新版本pip,安裝pipenv,將本地復(fù)制Pipfile到Docker,然后運(yùn)行它來(lái)安裝我們的依賴項(xiàng)。RUN命令允許我們?cè)贒ocker中運(yùn)行命令,就像在命令行上一樣。

我們無(wú)法運(yùn)行Docker容器,直到它有一個(gè)圖像,所以讓我們通過(guò)第一次構(gòu)建圖像??來(lái)做到這一點(diǎn)。

$ docker build .

如果成功,你會(huì)看到很多輸出!

接下來(lái)我們需要一個(gè)新docker-compose.yml文件。這告訴Docker 如何運(yùn)行我們的Docker容器。

(mb) $ touch docker-compose.yml

然后輸入以下代碼。

version: '3.7'services:  db:    image: postgres:10.1-alpine    volumes:      - postgres_data:/var/lib/postgresql/data/  web:    build: .    command: python /code/manage.py runserver 0.0.0.0:8000    volumes:      - .:/code    ports:      - 8000:8000    depends_on:      - dbvolumes:  postgres_data:

在最上面我們使用最新版本的Compose,它是“3.6”。

db數(shù)據(jù)庫(kù),我們要為Postgres的10.1泊塢窗圖像,并使用volumes告訴撰寫其中容器應(yīng)設(shè)在我們的碼頭工人容器。

因?yàn)?/font>web我們正在指定Web服務(wù)的運(yùn)行方式。First Compose需要從當(dāng)前目錄構(gòu)建映像并啟動(dòng)服務(wù)器0.0.0.0:8000。我們volumes用來(lái)告訴Compose將代碼存儲(chǔ)在我們的Docker容器中/code/ports配置讓我們自己的8000端口映射到端口8000的泊塢窗容器。這是默認(rèn)的Django端口。最后depends_on說(shuō)我們應(yīng)該db在運(yùn)行我們的Web服務(wù)之前先啟動(dòng)它。

最后一部分volumes是因?yàn)镃ompose有一條規(guī)則,您必須在頂級(jí)volumes鍵中列出命名卷。

Docker已經(jīng)完成了!

更新到PostgreSQL

我們需要更新我們的留言板應(yīng)用程序以使用PostgreSQL而不是SQLite。首先安裝psycopg2我們的數(shù)據(jù)庫(kù)綁定到PostgreSQL。

(mb) $ pipenv install psycopg2-binary

然后更新settings.py文件以指定我們將使用PostgreSQL而不是SQLite。

# settings.pyDATABASES = {    'default': {        'ENGINE': 'django.db.backends.postgresql',        'NAME': 'postgres',        'USER': 'postgres',        'HOST': 'db', # set in docker-compose.yml        'PORT': 5432 # default postgres port    }}

我們應(yīng)該migrate在Docker上使用我們的數(shù)據(jù)庫(kù)。

(mb) $ docker-compose run web python /code/manage.py migrate --noinput

此外,由于留言板應(yīng)用程序需要使用管理員,因此在Docker上創(chuàng)建超級(jí)用戶。運(yùn)行以下命令后填寫提示。

(mb) $ docker-compose run web python /code/manage.py createsuperuser

運(yùn)行Docker

我們終于準(zhǔn)備好運(yùn)行Docker了!第一次執(zhí)行該命令可能需要一段時(shí)間,因?yàn)镈ocker必須下載所有必需的內(nèi)容。但它會(huì)緩存這些信息,因此未來(lái)的加速會(huì)更快。

鍵入以下命令:

(mb) $ docker-compose up -d --build

我們可以通過(guò)導(dǎo)航到http://127.0.0.1:8000/來(lái)確認(rèn)它的工作原理,您將看到與以前相同的主頁(yè)。

現(xiàn)在轉(zhuǎn)到http://127.0.0.1:8000/admin并登錄。您可以添加新帖子,然后在主頁(yè)上顯示它們,就像Django for Beginners中所述。

完成后,不要忘記關(guān)閉Docker容器。

(mb) $ docker-compose down

快速?gòu)?fù)審

以下是我們?cè)诒疚闹薪榻B的術(shù)語(yǔ)和概念的簡(jiǎn)短版本:

  • 圖像:項(xiàng)目的“定義”
  • 容器:您的項(xiàng)目實(shí)際運(yùn)行的內(nèi)容(圖像的一個(gè)實(shí)例)
  • Dockerfile:定義圖像的外觀
  • docker-compose.yml:一個(gè)YAML文件,它接受Dockerfile并添加有關(guān)Docker容器在生產(chǎn)中的行為方式的其他說(shuō)明

我們使用Dockerfile告訴Docker如何構(gòu)建我們的圖像。然后我們?cè)?/font>容器中運(yùn)行我們的實(shí)際項(xiàng)目泊塢窗,compose.yml文件為我們的碼頭工人容器應(yīng)該如何表現(xiàn)在生產(chǎn)的附加信息。

推薦資源

有關(guān)Docker本身的更多解釋,我寫了一個(gè)單獨(dú)的Docker初學(xué)者指南如果你想深入了解Docker我自己使用的一個(gè)很棒的資源,現(xiàn)在推薦給其他人,那就是潛入Docker視頻課程。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服