使用docker部署django的詳細(xì)步驟
docker概念
docker是一種容器技術(shù),用來(lái)創(chuàng)造獨(dú)立的軟件容器,屬于操作系統(tǒng)的虛擬化技術(shù),隔離的進(jìn)程獨(dú)立于宿主和其他隔離的進(jìn)程。
docker容器對(duì)比虛擬機(jī)
虛擬機(jī):需要有必要的二進(jìn)制庫(kù)和完整的操作系統(tǒng),并且占據(jù)所有預(yù)分配的資源。
docker容器:與宿主共享操作系統(tǒng),可以實(shí)現(xiàn)資源的動(dòng)態(tài)分配,在用戶(hù)空間以分離的進(jìn)程運(yùn)行
docker鏡像、容器和倉(cāng)庫(kù)
鏡像是文件,容器是進(jìn)程;他們之間的關(guān)系像是類(lèi)和實(shí)例化對(duì)象的關(guān)系,一個(gè)類(lèi)可以有多個(gè)實(shí)例化對(duì)象。而倉(cāng)庫(kù)是一個(gè)其中的存儲(chǔ)、分發(fā)鏡像的服務(wù)。docker pull
是從倉(cāng)庫(kù)下載docker鏡像到本地,docker run
是創(chuàng)建一個(gè)容器并運(yùn)行一個(gè)命令,docker exec -it
是在運(yùn)行的容器中執(zhí)行命令
docker安裝
根據(jù)自己的系統(tǒng)選擇安裝方式docker安裝
docker使用
1.簡(jiǎn)單嘗試:使用docker pull nginx:latest
下載一個(gè)最新的nginx鏡像。
2.使用命令docker run --name my-nginx -p 80:80 -d nginx:latest
,創(chuàng)建一個(gè)容器,命令為my-nginx,-d
表示后臺(tái)運(yùn)行并返回容器的ID,-p
將端口指定到宿主的80端口。打開(kāi)瀏覽器訪問(wèn)80端口
3.使用命令docker exec -it my-nginx bash
開(kāi)啟一個(gè)交互模式終端
其中第一步不是必須,在執(zhí)行docker run
命令時(shí)找不到鏡像時(shí)會(huì)自動(dòng)從倉(cāng)庫(kù)拉取
docker常見(jiàn)命令
命令 | 作用 |
---|---|
docker pull | 從倉(cāng)庫(kù)下載鏡像 |
docker images | 查看所有本地鏡像 |
docker rmi | 刪除鏡像 |
docker run | 創(chuàng)建容器并執(zhí)行命令 |
docker rm | 刪除容器 |
docker stop | 停止容器,同理還有restart、start |
docker logs | 查看容器日志 |
docker exec bash | 進(jìn)入容器中執(zhí)行其他命令 |
單容器部署最基本的django
嘗試部署最基本的django項(xiàng)目
創(chuàng)建django項(xiàng)目
命令行輸入django-admin startproject mysite
,進(jìn)入創(chuàng)建的django文件夾中我們可以看見(jiàn)整個(gè)項(xiàng)目結(jié)構(gòu)
此時(shí)我需要在項(xiàng)目根目錄下創(chuàng)建Dockerfile
文件,該文件用于生成docker鏡像,內(nèi)容如下
# 建立 python3.7 環(huán)境 FROM python:3.7 # 鏡像作者 MAINTAINER LALALA # 設(shè)置 python 環(huán)境變量 ENV PYTHONUNBUFFERED 1 # 設(shè)置pip源為國(guó)內(nèi)源 COPY pip.conf /root/.pip/pip.conf # 在容器內(nèi)創(chuàng)建mysite文件夾 RUN mkdir -p /var/www/html/mysite # 設(shè)置容器內(nèi)工作目錄 WORKDIR /var/www/html/mysite # 將當(dāng)前目錄文件加入到容器工作目錄中(. 表示當(dāng)前宿主機(jī)目錄) ADD . /var/www/html/mysite # pip安裝依賴(lài) RUN pip install -r requirements.txt
繼續(xù)在項(xiàng)目根目錄下創(chuàng)建pip.conf文件,用于修改pip鏡像源
[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=mirrors.aliyun.com
最后創(chuàng)建requirements.txt
文件,因?yàn)橹恍枰猟jango,只需要安裝django即可
Django==3.2.12
項(xiàng)目?jī)?nèi)容設(shè)置完后,在項(xiàng)目根目錄輸入命令docker build -t django_docker_img:v1 .
創(chuàng)建鏡像,使用命令docker images
查看鏡像,可以看見(jiàn)剛剛創(chuàng)建的鏡像
在Dockerfile
中第一行是from python:3.7
,也就是在創(chuàng)建過(guò)程中會(huì)從docker倉(cāng)庫(kù)中拉取python:3.7
的鏡像,速度過(guò)慢的話請(qǐng)修改你的docker鏡像源,可以直接在docker界面處修改,https://b2bk1nge.mirror.aliyuncs.com
輸入命令docker run -it -d -p 80:8000 --name mysite django_docker_img:v1
創(chuàng)建并運(yùn)行容器,此命名將該容器映射到本地80端口,使用docker ps
查看運(yùn)行情況。然后使用命令docker exec -it mysite bash
進(jìn)入容器內(nèi)部,會(huì)發(fā)現(xiàn)此刻處于Dockerfile
中設(shè)置的工作目錄,該目錄下內(nèi)容即為項(xiàng)目文件內(nèi)容,pip已安裝requirement.txt
中的依賴(lài)
最后在容器的bash中執(zhí)行下面命令,完成數(shù)據(jù)庫(kù)遷移和運(yùn)行django項(xiàng)目
python manage.py makemigrations python manage.py migrate python manage.py runserver 0.0.0.0:8000 # 務(wù)必寫(xiě)0.0.0.0,如果是127.0.0.1是容器的環(huán)回地址,會(huì)導(dǎo)致在宿主機(jī)中無(wú)法訪問(wèn)
此時(shí)在瀏覽器中訪問(wèn)http://127.0.0.1/
可以看到運(yùn)行的django項(xiàng)目
小結(jié)
本篇文章主要是嘗試性的使用docker來(lái)部署項(xiàng)目,學(xué)習(xí)過(guò)程中也是踩了一些坑,目前來(lái)看使用docker安裝鏡像很方便,之前在安裝需要的軟件時(shí),往往會(huì)遇上各種各樣的小bug,而使用docker后只需要簡(jiǎn)單地拉取鏡像創(chuàng)建容器,兩行命令解決所有煩惱。
- Go項(xiàng)目與Docker結(jié)合實(shí)現(xiàn)高效部署深入探究
- docker如何安裝部署golang應(yīng)用程序
- 詳解如何在Docker部署Go程序
- Docker部署Go項(xiàng)目發(fā)布鏡像到倉(cāng)庫(kù)
- 云原生Docker部署Django和mysql項(xiàng)目全過(guò)程
- Docker部署golang環(huán)境詳解
- 如何使用Docker部署Go Web應(yīng)用的實(shí)現(xiàn)
- centos8使用Docker部署Django項(xiàng)目的詳細(xì)教程
- 基于Docker鏡像部署go項(xiàng)目的方法步驟
- Docker部署Golang服務(wù)的實(shí)現(xiàn)步驟
相關(guān)文章
使用Docker compose啟動(dòng)自定義jar包的步驟詳解
這篇文章主要介紹了使用Docker compose啟動(dòng)自定義jar包的步驟,首先我們需要編寫(xiě)一個(gè)docker-compose.yml文件來(lái)定義我們的服務(wù)傳到我們的云服務(wù)器上,本文給大家分享示例代碼,感興趣的朋友一起看看吧2024-03-03jenkins構(gòu)建Docker 鏡像實(shí)例詳解
這篇文章主要介紹了 jenkins構(gòu)建Docker 鏡像實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04關(guān)于構(gòu)建aarch64環(huán)境Mysql8.0的Docker鏡像問(wèn)題
這篇文章主要介紹了構(gòu)建aarch64環(huán)境Mysql8.0的Docker鏡像,需要的朋友可以參考下2022-04-04FastAPI 部署在Docker的詳細(xì)過(guò)程
這篇文章主要介紹了FastAPI 部署在 Docker的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10