1. 程式人生 > >Docker搭建Python+Django+mysql開發環境

Docker搭建Python+Django+mysql開發環境

參考地址http://blog.csdn.net/yhcvb/article/details/45696961
使用Dockerfile構建映象,以下出現的achievements為工程的名稱

一、使用python2,建立新專案
1.登入伺服器,在root下建立資料夾作為專案根目錄

mkdir site && cd site
mkdir db achievements

2.建立配置檔案Dockerfile

vi Dockerfile
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
RUN mkdir /code/db
WORKDIR /code
ADD
./requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/

3.建立docker-compose.yml檔案

vi docker-compose.yml
db:
  image: mysql
  expose:
    - "3306"
  volumes:
    - ./db:/var/lib/mysql
  environment:
    - MYSQL_DATABASE=achievements
    - MYSQL_ROOT_PASSWORD=root

web:
  build: .
  command: python ./achievements/manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
ports: - "8081:8000" links: - db

4.建立requirements.txt檔案

vi requirements.txt
django==1.7.5
MySQL-python

5.編譯構建映象

docker-compose build

至此,python開發環境搭建完成

6.建立工程

docker-compose run web django-admin.py startproject achievements ./achievements

修改目錄的許可權

chmod -R 777 achievements/

7.修改工程配置檔案setttings.py的資料庫配置

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

8.執行

docker-compose up
//在後臺執行
docker-compose up -d

訪問http://127.0.0.1:8081/

//遠端訪問不成功可能有防火牆,使用docker命令訪問測試
curl http://127.0.0.1:8081/ 

二、使用python3,匯入已建立的專案

使用工具SecureCRT可以將檔案從本地傳到遠端伺服器
SecureCRT下載和啟用地址https://www.cnblogs.com/lianghe01/p/6618651.html

步驟同上,只是檔案內容不一樣

mkdir site && cd site
mkdir db Achievements
目錄結構(Achievements為程式碼庫):
Achievements  db  docker-compose.yml  Dockerfile requirements.txt
vi Dockerfile
FROM python:3.5
ENV PYTHONUNBUFFERED 1
RUN echo python -V
RUN mkdir /code
RUN mkdir /code/db
WORKDIR /code
#ADD ./requirements.txt /code/
RUN pip install -i https://pypi.douban.com/simple django
RUN pip3 install PyMySQL
RUN pip3 install mysqlclient
#RUN pip3 install -r requirements.txt
ADD . /code/
vi docker-compose.yml
db:
  image: mysql
  expose:
    - "3306"
  volumes:
    - ./db:/var/lib/mysql
  environment:
    - MYSQL_DATABASE=achievements
    - MYSQL_ROOT_PASSWORD=root

achievements:
  build: .
  command: python3 ./Achievements/manage.py runserver 0.0.0.0:8000
  volumes:
    - .:/code
  ports:
    - "8000:8000"
  links:
    - db
vi requirements.txt 
django
mysqlclient
#pymysql
docker-compose build
docker-compose up
後臺執行
docker-compose up -d
//執行python shell
docker-compose run web mysite/manage.py shell

setting.py檔案修改:

ALLOWED_HOSTS = ['*',]

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

製作mysql映象:https://www.cnblogs.com/weifeng1463/p/7941625.html