Docker搭建Python+Django+mysql開發環境
阿新 • • 發佈:2018-12-15
參考地址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
//遠端訪問不成功可能有防火牆,使用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