Docker 搭建 Django+Mariadb 環境

2021-12-29 51reboot運維開發
一、閱讀建議

先通讀全文後,再自行決定需要實踐的步驟。後文總是有更簡潔更快更好的實踐。

不過,新人建議從頭到尾實踐,也不失為「笨辦法學 Docker 」的美談一樁。

本文思路:

直接拉取 Mariadb 鏡像,搭建資料庫
手動 Build Django 鏡像:
 以 python2.7 為基礎鏡像
 讓我們做的更好:以 Python2.7-slim 為基礎鏡像的優化
 "docker -v"&&"docker --link"

源碼:git@github.com:AnInputForce/autodepopy.git

基本上是邊學邊實驗,關鍵步驟都有 commit。請各位參考。


二、正文
環境之「Docker-Mariadb」搭建

參考:在 Mac 中直接安裝 Maridb(不推薦),Mac 中 MariaDB 資料庫的安裝步驟(https://www.jb51.net/article/93202.htm)

首先,把你的宿主機 mac 或 linux 裝上 tree 命令。沒有也沒關係,下文有相關的換成 ls 即可;


下載 Mariadb 資料庫鏡像
啟動並配置 DB

映射資料庫數據文件和配置文件

新建~/mariadb/data 、~/mariadb/custom 目錄

-v ~/mariadb/data:/var/lib/mysql 映射數據文件出來

-v ~/mariadb/custom:/etc/mysql/conf.d 映射配置文件出來

指定資料庫編碼 utf8mb4,參考:mysql 使用 utf8mb4 經驗吐血總結

$ mkdir -p ~/mariadb/data ~/mariadb/custom
$ docker run --name my-mariadb -v ~/mariadb/data:/var/lib/mysql   -v ~/mariadb/custom:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1q2w -d mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

測試驗證

$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
77de3a6bf3fe        mariadb:latest      "docker-entrypoint..."   2 minutes ago       Up About a minute   0.0.0.0:3306->3306/tcp   my-mariadb
$ docker exec -it my-mariadb bash
root@77de3a6bf3fe:/
Welcome to the MariaDB monitor.  Commands end with ; or \g.
....
MariaDB [(none)]> show databases;
++
| Database           |
++
| information_schema |
| mysql              |
| performance_schema |
++
3 rows in set (0.02 sec)

環境之「Docker-Django」搭建

很意外,翻了翻官方 hub 鏡像,有如下提示:

This image is officially deprecated in favor of the standard python image;

大致意思是:這個鏡像已被標準 python 鏡像取代。該鏡像不能直接帶來Django 環境,僅有的價值是提供一些 Django 依賴如 mysql-client 等。或許因為Django 是 APP 級的,依賴於 Project 的 requirements.txt,like this:

只能自己動手,豐衣足食了。正好練練剛學習到的知識。


準備項目目錄

workspace 工作空間,所有項目大本營:自己習慣

autodeploy 自動部署項目的目錄:自己習慣

z-dev 存放開發環境 dockerfile 及相關信息:自己習慣

z-pub 存放生產環境 dockerfile 及相關信息:自己習慣

.dockerignore 存放不被鏡像build 時關注的文件:來自 Vscode。linux下不可見,具體內容詳見此項目 github;

$ mkdir -p ~/workspace/autodeploy && cd ~/workspace/autodeploy && mkdir z-dev z-pub


創建 Dockerfile

直接使用 Python2.7 基礎鏡像,簡單粗暴省事,適合想快速體驗的孩子:

# 基礎鏡像
FROM python:2.7
# 維護者信息
MAINTAINER kang.cunhua <kangcunhua@git.com.cn>
# app 所在目錄
WORKDIR /usr/local/web
ADD . /usr/local/web/
# 安裝 app 所需依賴
RUN pip install --no-cache-dir -r requirements.txt

創建 requirements.txt

Django==1.11.3
MySQL-python

宿主機當前目錄結構

ChinaDreams:autodeploy kangcunhua$ tree
.
├── readme.md
├── z-dev
│   ├── Dockerfile
│   └── requirements.txt
└── z-pub
   └── Dockerfile

2 directories, 4 files

Build 鏡像

當前目錄:~\workspace\autodeploy

cd z-dev && docker build -t mydjango:latest .


查看鏡像

ChinaDreams:z-dev kangcunhua$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mydjango            latest              90a25c587400        23 seconds ago      699MB

啟動運行&進入容器

後臺啟動:-d 參數,不加就進入 bash 交互界面了。此處為演示,先 run -d 後臺,再 exec 進入;

ChinaDreams:z-dev kangcunhua$ docker run --name web -it -p 8000:8000 -d mydjango /bin/bash
0b0e757708c29d0aa1799c14b6cd1f19a48e7cd748223064a0ab9205432ed23a
ChinaDreams:z-dev kangcunhua$ docker exec -it web /bin/bash
root@9326b308aacd:/usr/local/web

清理和驗證環境

清理多餘文件

root@9326b308aacd:/usr/local/web
requirements.txt
root@9326b308aacd:/usr/local/web

驗證

root@9326b308aacd:/usr/local/web
Python 2.7.13
root@9326b308aacd:/usr/local/web
1.11.3

腳手架生成項目,啟動 web 服務

root@26ad1dfb070f:/usr/web
root@26ad1dfb070f:/usr/web

瀏覽器訪問

http://localhost:8000,不出意外,你可以看到傳說中的 Django 歡迎頁面:

It worked!
Congratulations on your first Django-powered page.

把項目框架 copy 出來

CONTROL-C 退出 webserver;然後退出容器:

root@9326b308aacd:/usr/local/web/autodeploy# exit
exit
ChinaDreams:z-dev kangcunhua$ cd ~/workspace && docker cp web:/usr/local/web/autodeploy . && cd autodeploy && rm -rf db.sqlite3 && tree
.
├── autodeploy
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   ├── urls.pyc
│   ├── wsgi.py
│   └── wsgi.pyc
├── manage.py
├── readme.md
├── z-dev
│   ├── Dockerfile
│   └── requirements.txt
└── z-pub
   └── Dockerfile

3 directories, 13 files

刪除容器 web

到此為止,此容器使命已經完成:生成項目初始化目錄,刪了即可;

ChinaDreams:autodeploy kangcunhua$ docker stop web && docker rm web

新啟容器 web,掛載本地目錄

本地目錄優先覆蓋容器目錄,然後就實時同步了。PS:所以一開始想把容器內某目錄掛載出來,比較難。不如先 copy 出來,清空。然後從本地掛載上去。

「run -d」後臺啟動,exec執行命令啟動 web server

ChinaDreams:autodeploy kangcunhua$  docker run --name web -d -it -p 8000:8000 -v ~/workspace:/usr/local/web  mydjango /bin/bash
2bf0f6d17f1d103a37a7992393e1f97483034cdadb01df6cf49ab4e1d8746f62
ChinaDreams:autodeploy kangcunhua$ docker exec -it web /bin/bash -c "cd autodeploy&&python manage.py runserver 0:8000"

運行,收穫 Django 歡迎界面

http://localhost:8000

It worked!
Congratulations on your first Django-powered page.

歡慶吧,少年!


三、讓我們做的更好
需要清醒的是,還有以下問題

我們此時還未使用到 Mariadb,默認使用的是 SqlLite 資料庫。接下來我們看看,從 web 容器中如何訪問資料庫;

我們默認使用的是 Python 的基礎庫,安裝完 django 體積達到了驚人的近 700M。

在 docker pull 安裝鏡像時,簡直是龜速:由於眾所周知的原因

在 pip install 安裝 python 模塊是,也和龜速差不多了:由於眾所周知的原因

我們能不能做的更好?答案是,必須能!


改進我們的 Dockerfile


FROM python:2.7-slim

MAINTAINER kang.cunhua <kangcunhua@git.com.cn>

WORKDIR /usr/src/web
ADD . /usr/src/web

RUN  buildDeps='gcc'; \
 deveDeps='mysql-client'; \
 set -x \
 && cp /etc/apt/sources.list /etc/apt/sources.list.backup \
 && mv sources.list /etc/apt/sources.list \
 && apt-get update && apt-get install -y libmysqlclient-dev $buildDeps $deveDeps \
 
 && pip install --no-cache-dir -r requirements.txt ipython==5.4.1 \
 -i http:
 && rm -rf requirements.txt \
 
 && apt-get purge -y --auto-remove $buildDeps

注釋已經不少了,對於新增的內容,還有些解釋如下:

python:2.7-slim

改用更小的 slim 鏡像。一是減小構建鏡像大小,二是可以從精簡版折騰開始,複習鞏固 Dockerfile 的知識。

比對下前後兩個構建完畢的鏡像打下,安裝了一大堆工具,鏡像減小了1/2的體積。之所以第二個鏡像 repository:tag 都為 none,是因為我們這次打包的鏡像也使用了mydjango:latest。

ChinaDreams:z-dev kangcunhua$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mydjango            latest              8fee1723a96c        2 minutes ago       355MB
<none>              <none>              90a25c587400        About an hour ago   699MB

sources.list

python 的鏡像使用的 Debian,版本是 jessie。找到了國內阿里雲的加速鏡像。

deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib

mirrors.aliyun.com

同樣使用的是阿里雲的 python pip 源,安裝時指定阿里雲的源,並信任即可。

-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

安裝 mysql-client

是因為 「python manage.py dbshell」 命令需要。此命令可以方便操作資料庫,並自動加載了一些環境變量;開發環境還是用得到的;生成環境可以移除;若不安裝,執行命令 python manage.py dbshell 時,會提示

CommandError: You appear not to have the 'mysql' program installed or on your path.
安裝和卸載gcc

安裝和卸載 gcc

因為 MySQL-python 的安裝依賴 gcc。網上也有說安裝 MySQL-devel 包就能解決,暫不需要,也有提示把這些 python-devel mysql-devel zlib-devel openssl-devel,都安裝上就好了,太多了。只安裝 gcc,用完之後再卸載即可。

不安裝 gcc 在 build 時編譯 MySQL-python 報錯:

unable to execute 'gcc': No such file or directory
error: command 'gcc' failed with exit status 1

安裝 ipython==5.4.1

是因為 「python manage.py shell」 進入交互式命令行會用到。不安裝不方便。如果你安裝了 ipython 會自動用它們的界面。ipython 是一套增強交互式 Shell,用過的都說好;當然:生產環境可以不用安裝。


開始重新構建


準備:創建資料庫

ChinaDreams:autodeploy kangcunhua$ docker exec -d my-mariadb mysql -uroot -p1q2w -e "create database mydeploy;"

準備:修改 DB 配置

刪除db.sqlite3,之前雖然copy時刪除了,但是運行webserver時默認配置的還是sqlite3,所以又生成了。

cd ~/workspace/autodeploy && rm db.sqlite3

進入 web 容器,修改 /autodeploy/autodeploy/settings.py中DATABASES 配置:

docker exec -it web /bin/bash

因為我們已經做了本地映射,直接用 Vscode 修改對應配置文件也是有效的;

注意』HOST』: 『db』中,db 就是我們在 link 中配置的別名。

DATABASES = {  
   'default': {  
       'ENGINE': 'django.db.backends.mysql',  
       'NAME': 'mydeploy',  
       'USER': 'root',  
       'PASSWORD': '1q2w',  
       'HOST': 'db',  
       'PORT': '3306',  
   }  
}

Build 鏡像

當前目錄:~\workspace\autodeploy

cd z-dev && docker build -t mydjango:latest .

查看鏡像

ChinaDreams:z-dev kangcunhua$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mydjango            latest              90a25c587400        23 seconds ago      699MB

Web 容器訪問 Mariadb 資料庫

這時,就不得不提「–link」命令的使用了:

name 是我們連接容器的名字,alias 是 link 的別名。比如我們連接了資料庫容器的 web 容器,就可以拿 alias 來配置資料庫連接了。見下文:我們在啟動容器時 link 資料庫:

不加這個 link,你在 web 容器中,是連不上 127.0.0.1:3306 的。即使暴露了 3306 埠;

後臺啟動資料庫(-d)

此時我們資料庫應該是啟動的,如果 docker ps 發現沒有啟動,沒關係,敲如下命令啟動:

docker run --name my-mariadb -v ~/mariadb/data:/var/lib/mysql   -v ~/mariadb/custom:/etc/mysql/conf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1q2w -d mariadb:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

為項目創建資料庫 mydeploy,如果有錯誤,先查日誌

docker exec -d my-mariadb mysql -uroot -p1q2w -e "create database mydeploy;"
docker logs my-mariadb

啟動 web 容器 link 資料庫容器

docker run --name web  --link=my-mariadb:db -it -p 8000:8000 -v ~/workspace:/usr/src/web  -d mydjango:latest /bin/bash
e309fd9e718faf6629ce668860d5c9392c52da4f649f4307abf632a15b67285c

驗證環境命令

分別是:檢查 python 版本、檢查 django 版本、進入 dbshell 操作資料庫、進入 ipython;

python --version
python manage.py -m django --version
./manage.py dbshell
./manage.py shell

創建管理員

先 migrate 資料庫,在創建管理員

ChinaDreams:z-dev kangcunhua$ docker exec -it web /bin/bash
root@e309fd9e718f:/usr/src/web
root@e309fd9e718f:/usr/src/web/autodeploy
root@e309fd9e718f:/usr/src/web/autodeploy

啟動 web 伺服器

在 web 容器中,執行

python manage.py runserver 0:8000

在宿主機上訪問

就可以看到傳說中的 Django 歡迎頁:「It works!」。查看資料庫,也有對應的表創建了。登錄後臺,也可以看到對應自動生成好的頁面

MySql客戶端推薦

對了,mac 下 MySQL 或 Mariadb 客戶端,推薦 Sequel Pro,免費且超級好用,比Oracle 官方的都好用。


四、能不能做的更好

答案是:能,必須能!比如我們可以引進 docker compose 來創建幾個微服務,整合指揮整個系統架構;


讓我們引入 docker-compose

docker-compse 是我們容器集群的眾多微服務管理利器。


修訂 dockerfile

不使用文件的方式更新源,改為在 dockfile 中直接用命令寫入阿里雲的源,方便在 git中管理版本。

來一份完整的 dockerfile 參考:


FROM python:2.7-slim

MAINTAINER kang.cunhua <kangcunhua@git.com.cn> 

WORKDIR /usr/local/web
ADD . /usr/local/web

RUN  buildDeps='gcc'; \ 
 deveDeps='mysql-client'; \ 
 set -x \
 && mv /etc/apt/sources.list /etc/apt/sources.list.bak  \
   && echo "deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib" >/etc/apt/sources.list \
   && echo "deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free  contrib" >>/etc/apt/sources.list \
   && echo "deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib" >>/etc/apt/sources.list \
   && echo "deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib" >>/etc/apt/sources.list \
 && apt-get update && apt-get install -y libmysqlclient-dev $buildDeps $deveDeps \
 
 && pip install --no-cache-dir -r requirements.txt ipython==5.4.1 \
 -i http:
 && rm -rf requirements.txt \
 
 && apt-get purge -y --auto-remove $buildDeps

dockercompose.yml

version: '2'
services:
 db:
   image: mariadb
   expose:
     - "3306"
   volumes:
     - ~/mariadb/data:/var/lib/mysql
     - ~/mariadb/custom:/etc/mysql/conf.d
   environment:
     - MYSQL_DATABASE=mydeploy
     - MYSQL_ROOT_PASSWORD=1q2w  
     - ON_CREATE_DB="mydeploy"
     - COMPOSE_PROJECT_NAME=autodeploy
   command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
 web:
   build:  
     context: .
   image: mydjango:latest
   volumes:
     - ~/workspace:/usr/local/web
   ports:
     - "8000:8000"
   links:
     - db
   command: python ./autodeploy/manage.py runserver 0.0.0.0:8000

啟動並訪問migrateDB、創建管理員

ChinaDreams:z-dev kangcunhua$ docker exec -it zdev_web_1 /bin/bash
root@e309fd9e718f:/usr/local/web
root@e309fd9e718f:/usr/local/web/autodeploy
root@e309fd9e718f:/usr/local/web/autodeploy

校驗環境變量

root@e309fd9e718f:/usr/local/web/autodeploy
show variables like 'character_set_database';
show variables like 'collation_%';

排錯命令

基本上 docker 能用的命令,docker-compose 也能用

docker-compose up -d  
docker-compose logs    
docker-compose ps    

指定 Project 名啟動

如果不指定,默認容器服務的name是」當前目錄 _service_number」,比如」zdev_web_1」,指定為 autoploy 後,應該會變成 _」autodeploy__web_1」。

COMPOSE_PROJECT_NAME=autodeploy docker-compose up
docker-compose -p autodeploy up

訪問
當前文件目錄

ChinaDreams:workspace kangcunhua$ tree
.
└── autodeploy
   ├── autodeploy
   │   ├── __init__.py
   │   ├── __init__.pyc
   │   ├── settings.py
   │   ├── settings.pyc
   │   ├── urls.py
   │   ├── urls.pyc
   │   ├── wsgi.py
   │   └── wsgi.pyc
   ├── manage.py
   ├── readme.md
   ├── z-dev
   │   ├── Dockerfile
   │   ├── docker-compose.yml
   │   ├── requirements.txt
   │   └── sources.list
   └── z-pub
       └── Dockerfile

4 directories, 15 files

五、參考列表
Mariadb 在 Docker 下安裝配置

參考:Start a mariadb server instance,強烈推薦。

參考: docker(6):使用dokcer 構建 mariadb 資料庫

使用一個最簡單的辦法安裝了mariadb。並且將數據放到了宿主機的 /data/mysql/data 目錄下面了。 方便數據備份,數據遷移,同時暴露了 3306 埠對外。 使用 docker 還是非常的方便的,比起 yum 安裝配置簡單多了。 配置文件也可以通過目錄映射的方式修改。 而且完全的拆分了服務,存儲,接口。真的是一個貨櫃了。


Mac tree 命令

參考:mac tree 命令及參數

Django 文檔

Getting Started

Writing your first Django app, part 1

Writing your first Django app, part 2

51Reboot 最新課程招生信息

此課程為網絡直播課程,一共 10 個課時,每周上一個全天,歷時兩個多月。附加:錄播視頻+筆記+除課堂外的答疑時間(7次+)原價 5800 ,現在周年活動 100 定金抵 500

課程主講師

GY 老師:

10年一線軟體開發經驗,先後經歷了傳統安全公司,以及多家網際網路公司;在安全開發方面,曾開發過 Linux 防火牆、web 應用防火牆、Linux 安全內核加固,基於大流量的 Web 安全威脅分析等項目;在網際網路公司工作時,曾基於 DPDK 高性能網絡開發框架開發過基於全流量的網絡流量分析平臺和基於 Sflow 網絡流量分析平臺,基於 Golang 開發 SmartDNS 等;開發語言也是從C -> python -> golang 的轉變過程?現從事基於 K8S 和 Docker在私有雲平臺建設方面的研發工作;具備豐富的Linux系統開發經驗、網絡開發經驗以及項目管理經驗;目前開發工作90+% 都在用 Golang,Golang 是一門簡潔、高效、強大且靈活的程式語言。

關於課程的具體內容想要了解的, 掃碼加小助手諮詢

相關焦點

  • 讓你的項目更輕鬆——docker部署django項目
    1、執行命令創建網絡,網絡名為:django_app_net。Bash1docker network create django_app_net2、啟動mysql容器。Bash1docker run --name db -v mysql_db:/var/lib/mysql --restart=always -e MYSQL_ROOT_PASSWORD=xxxx -e MYSQL_DATABASE=ancient -d --network django_app_net mariadb --character-set-server
  • 使用Docker高效搭建開發環境
    ,今天給大家帶來的是奇虎360的開發是如何使用Docker高效搭建開發環境的。公司雖然有專門負責部署、運維這些服務的同學,但我在開發的時候,還是喜歡自己來搭建這些東西,因為這樣通常可以對使用到的服務有更多的認識,也能幫助自己使用的更好。今天我就來和大家分享下我是如何高效的搭建好自己的開發環境的。
  • 細述docker容器創建MariaDB鏡像
    mysql_server mariadb:1.0創建容器[root@test01 ~]# docker run -d -p 13306:3306 mariadb:1.0 /root/run.sh[root@test01 ~]# docker psCONTAINER ID IMAGE
  • docker構建Mariadb資料庫
    獲取mariadb鏡像地址root@debian1:~/nginx# docker search mariadbNAME   DESCRIPTION       STARS[OK]拉去maridb的最新鏡像root@debian1:~/nginx# docker pull  mariadbUsing default tag: latestlatest: Pulling from library/mariadb啟動,mariadb鏡像
  • Docker容器裡部署Apache+PHP+MariaDB+phpMyAdmin
    前面講到了創建MariaDB,這次在前面的基礎上搭建phpMyAdmin服務,以便友好的管理資料庫MariaDB。
  • nginx+uwsgi+django環境搭建
    前天在一個python技術開發群裡大家都在聊django開發相關內容時,突然有一個哥們蹦出來一句,誰能幫我搭建一個的django環境,nginx
  • 【Django框架】-Pycharm搭建部署Django環境
    項目環境搭建一、創建Django項目1. 創建python虛擬環境實際工作中是在Linux上進行開發,所以最好是在虛擬機上或者連接阿里雲等各種雲進行開發。我這裡直接在阿里雲上,使用Centos 7中進行開發。
  • facebook ATC 弱網測試環境 docker 搭建指南
    前言我的環境: Ubuntu16.04 64bit、Python 2.7.12、Django1.8.7環境要求
  • 使用 Docker 搭建 Laravel 本地環境
    也就是一個虛擬機,但是跟 docker 比,它佔用體積太大,啟動速度慢,同時響應速度很慢,現在有了 docker 這種更好的方式,可以輕鬆方便的搭建整套 PHP 開發環境。本文就介紹如何使用 docker 搭建 Laravel 本地環境。安裝 docker首先安裝 docker。
  • Docker部署Django由淺入深系列(下): 八步部署Django+Uwsgi+Nginx+MySQL+Redis
    # Step 1: 以ubuntu為例,下載docker-compose $ sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname
  • Django基礎篇--搭建開發環境
    今天是CoolBlog開發筆記的第二課,我們將要講解的是開發環境的搭建。俗話說"工欲善其事必先利其器",Django開發中我們選擇一些比較好用的開發工具大有裨益。        開發選擇的作業系統為win7 x64旗艦版(比較普遍,我也想用Mac),Python版本使用的是3.5.2,Django採用的版本是1.9.8。
  • 如何使用 Poetry 和 Docker 初始化 Django 項目.
    Poetry如果在構建你的docker鏡像時,總是安裝最新的版本依賴,則可能導致各種問題,例如,在你不知道的情況下升級包時,會出現隨機的問題。: /root/.cache/pypoetry/virtualenvs/django-demo-Rynr7wfR-py3.6使用這個命令後,會在虛擬環境路徑下創建一個envs.toml文件, 用來存儲哪些虛擬環境制定了Python的版本
  • docker入門
    image.pngDocker通過linux的namespace實現資源隔離、cgroups實現資源控制,通過寫時複製機制(copy-on-write)實現了高效的文件操作,在實際開發中可用於提供一次性的環境、微服務架構的搭建、統一環境的部署.
  • Dockerfile搭建極簡LNMP環境
    最近才發現ThinkPHP6.0和CI4.x都要求php版本為7.1以上了,本機的php版本還停留在7.0.3x,又懶得升級,於是考慮使用Docker來運行一個lnmp環境
  • mariadb (CVE-2020-7221) 提權漏洞分析
    近日,奇安信CERT在日常監測中從oss-security郵箱中監測到這枚MariaDB提權漏洞,經研判雖這個漏洞到達不了風險通告流程,但由於和監測到此漏洞比較有意思故有了下文展開分析。如有不足之處,歡迎批評指正。聲明:本篇文章由 Evi1hui@ QAX A-TEAM原創,僅用於技術研究,不恰當使用會造成危害,嚴禁違法使用 ,否則後果自負。
  • 使用 Docker 容器化 Django Web 應用
    如果你不知道 Docker 是什麼,你只需要將它理解成一個巨大的 virtualenv(一種 Python 虛擬環境),它實際上不僅只包含一些 Python 軟體包,且使用 Containers(容器)將作業系統中的所有依賴與應用程式,資料庫,Worker(譯註:應該說的是 Celery Worker) 等等打包結合。好吧,「Talk is cheap,Show me some code」,老兄。
  • Docker+Selenium Grid+Python搭建分布式測試環境
    於是搭建了一個分布式的測試環境來試試。Web兼容性的環境。  既然Docker現在已經如此流行,此次嘗試著在Docker的環境中搭建用於兼容性Web測試的分布式測試環境。  目標:  1.成功搭建docker結合selenium構建分布式測試環境。  2.編寫腳本執行web的自動化測試分布式測試。
  • Docker-compose 八步部署Django + Uwsgi + Nginx + MySQL + Redis升級篇
    使用 docker-compose 後不再需要使用 shell 腳本來逐一創建和啟動容器,還可以通過 docker-compose.yml 文件構建和管理複雜多容器組合。Docker-compose的下載和安裝很簡單,網上有很多教程,我就不再詳述了。這裡只記錄下ubuntu系統下docker-compose的安裝過程。
  • Docker搭建pwn環境
    本文為看雪論壇優秀文章看雪論壇作者ID:直木其實以前就想搭建一個docker環境,但是那時候想用dockfile來一步到位
  • windows下django開發環境配置
    本文的系統基於windows 10版本,介紹如何搭建一個django的開發環境, 並且可以對django進行源碼調試。1 安裝Conda軟體去Anaconda(https://www.anaconda.com/)網站下載軟體,然後直接安裝即可。安裝完成之後菜單內容如下: