久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    如何使用的Django和PostgreSQL和Docker

     書*金 2018-12-14

    https:///django-docker-postgresql/


    在本教程中,我們將使用Docker和PostgreSQL創建一個新的Django項目。Django提供內置的SQLite支持,但即使是本地開發,最好使用像PostgreSQL這樣的“真實”數據庫,它與生產中的內容相匹配。

    可以在本地使用類似的工具運行PostgreSQL Postgres.app然而,許多開發者今天的優先選擇是使用泊塢窗,創建獨立的操作系統的工具。最簡單的思考方式是作為一個包含Django項目所需內容的大型虛擬環境:依賴項,數據庫,緩存服務以及所需的任何其他工具。

    使用Docker的一個重要原因是它完全消除了本地開發設置的任何問題。您只需運行整個項目的Docker鏡像,而不必擔心在項目中安裝或運行本地數據庫的軟件包。最重要的是,這可以在小組中共享,使團隊開發更加簡單。

    安裝Docker

    第一步是為本地計算機安裝桌面Docker應用程序:

    Docker的初始下載可能需要一些時間才能下載。這是一個很大的檔案。此時請隨意伸展雙腿!

    Docker完成安裝后,我們可以確認正在運行的版本。它至少應該是18版。

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

    Django項目

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

    在桌面上創建一個新目錄并將repo克隆到其中。

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

    然后安裝指定的軟件包Pipenv并啟動一個新shell。

    $ pipenv install
    $ pipenv shell
    

    migrate在這些更改后確保我們的數據庫。

    (mb) $ python manage.py migrate
    

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

    Docker(再次)

    希望Docker在這一點上完成安裝。要確認安裝是否成功,請退出本地服務器,Control+c然后docker run hello-world在命令行上鍵入您應該看到這樣的回復:

    $ docker run hello-world
    Unable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    d1725b59e92d: Pull complete
    Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
    Status: Downloaded newer image for hello-world:latest
    
    Hello 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 whi
    ch 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 container
    with:
     $ docker run -it ubuntu bash
    
    Share images, automate workflows, and more with a free Docker ID:
     https://hub./
    
    For more examples and ideas, visit:
     https://docs./get-started/
    

    圖像和容器

    Docker中有兩個重要的概念:圖像容器

    • 圖像:項目中所有軟件包的說明列表
    • 容器:圖像的運行時實例

    換句話說,圖像描述了將要發生的事情,而容器實際運行的。

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

    Dockerfile包含圖像的說明列表,也就是說,在容器的環境中實際發生了什么。

    創建一個新Dockerfile文件。

    (mb) $ touch Dockerfile
    

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

    # Pull base image
    FROM python:3.7-slim
    
    # Set environment varibles
    ENV PYTHONDONTWRITEBYTECODE 1
    ENV PYTHONUNBUFFERED 1
    
    # Set work directory
    WORKDIR /code
    
    # Install dependencies
    RUN pip install pipenv
    COPY ./Pipfile /code/Pipfile
    RUN pipenv install --system --skip-lock
    
    # Copy project
    COPY . /code/
    

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

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

    然后我們安裝我們的依賴項,確保我們有最新版本pip,安裝pipenv,將本地復制Pipfile到Docker,然后運行它來安裝我們的依賴項。RUN命令允許我們在Docker中運行命令,就像在命令行上一樣。

    我們無法運行Docker容器,直到它有一個圖像,所以讓我們通過第一次構建圖像??來做到這一點。

    $ docker build .
    

    如果成功,你會看到很多輸出!

    接下來我們需要一個新docker-compose.yml文件。這告訴Docker 如何運行我們的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:
          - db
    
    volumes:
      postgres_data:
    

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

    db數據庫,我們要為Postgres的10.1泊塢窗圖像,并使用volumes告訴撰寫其中容器應設在我們的碼頭工人容器。

    因為web我們正在指定Web服務的運行方式。First Compose需要從當前目錄構建映像并啟動服務器0.0.0.0:8000我們volumes用來告訴Compose將代碼存儲在我們的Docker容器中/code/ports配置讓我們自己的8000端口映射到端口8000的泊塢窗容器。這是默認的Django端口。最后depends_on說我們應該db在運行我們的Web服務之前先啟動它

    最后一部分volumes是因為Compose有一條規則,您必須在頂級volumes鍵中列出命名卷

    Docker已經完成了!

    更新到PostgreSQL

    我們需要更新我們的留言板應用程序以使用PostgreSQL而不是SQLite。首先安裝psycopg2我們的數據庫綁定到PostgreSQL。

    (mb) $ pipenv install psycopg2-binary
    

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

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

    我們應該migrate在Docker上使用我們的數據庫。

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

    此外,由于留言板應用程序需要使用管理員,因此在Docker上創建超級用戶。運行以下命令后填寫提示。

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

    運行Docker

    我們終于準備好運行Docker了!第一次執行該命令可能需要一段時間,因為Docker必須下載所有必需的內容。但它會緩存這些信息,因此未來的加速會更快。

    鍵入以下命令:

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

    我們可以通過導航到http://127.0.0.1:8000/來確認它的工作原理,您將看到與以前相同的主頁。

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

    完成后,不要忘記關閉Docker容器。

    (mb) $ docker-compose down
    

    快速復審

    以下是我們在本文中介紹的術語和概念的簡短版本:

    • 圖像:項目的“定義”
    • 容器:您的項目實際運行的內容(圖像的一個實例)
    • Dockerfile:定義圖像的外觀
    • docker-compose.yml:一個YAML文件,它接受Dockerfile并添加有關Docker容器在生產中的行為方式的其他說明

    我們使用Dockerfile告訴Docker如何構建我們的圖像然后我們在容器中運行我們的實際項目泊塢窗,compose.yml文件為我們的碼頭工人容器應該如何表現在生產的附加信息。

    推薦資源

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

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 精品无码国产一区二区三区51安 | 国产欧美日韩亚洲一区二区三区 | 国产精品免费中文字幕| 国产破外女出血视频| 亚洲乱码中文字幕小综合| 男人的天堂av社区在线| 99热国产这里只有精品9| 天堂资源中文最新版在线一区| 桃花岛亚洲成在人线AV| 久久久久亚洲精品无码蜜桃| 国产精品午夜福利精品| 亚洲国产无套无码AV电影| 久久蜜臀av一区三区| 白色丝袜国产在线视频| 国内不卡不区二区三区| 国产SUV精品一区二区88L| 深夜福利资源在线观看| 亚洲精品午夜国产VA久久成人| 一区二区不卡国产精品| 日韩AV无码免费播放| 无码免费大香伊蕉在人线国产| 日日噜噜夜夜爽爽| 丰满人妻被黑人连续中出| 日韩有码中文在线观看| 久久伊人色AV天堂九九小黄鸭| 精品中文字幕人妻一二| 国产精品亚洲LV粉色| 久久97人人超人人超碰超国产| 欧美日韩精品一区二区视频| A级毛片100部免费看| 亚洲日韩性欧美中文字幕| 成人综合婷婷国产精品久久| 久久大香伊蕉在人线免费AV| 日韩有码精品中文字幕| 精品国产精品国产偷麻豆| 国产成人久久精品流白浆| 日韩在线观看精品亚洲| 欧美丰满熟妇BBB久久久| 天堂久久久久VA久久久久| 国产91午夜福利精品| 国产一区二区精品久久|