Deploy Django Application with Docker
我们目前已经建立好了一个DRF 的 Application
我们在 Setting.py
里面做一些调整,将之前的SQLite 数据库 改成 PostgreSQL
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'password123',
'HOST': 'db',
'PORT': 5432,
}
}
接下来是 Dockerfile 和 docker-compose.yml
Dockerfile
FROM python:3.6.2 //拉 python 的image下来
ENV PYTHONUNBUFFERED 1 //Avoid getting unwanted buffering
RUN mkdir /docker_api //创建工作目录
WORKDIR /docker_api //指定工作目录
COPY . /docker_api/ //将所有files放到工作目录下
RUN pip install -r requirements.txt //执行安装 看下面
requirements.txt
django<2.0
psycopg2
djangorestframework
更多reference https://docs.docker.com/engine/reference/builder/
接下来看docker-compose
docker-compose.yml
version: '3'
services:
db:
container_name: 'postgres' custom container 名称
image: postgres
environment:
POSTGRES_PASSWORD: password123
ports:
- "5432:5432"
# (HOST:CONTAINER)
volumes:
- pgdata:/var/lib/postgresql/data/
web:
build: ./api
command: python manage.py runserver 0.0.0.0:8000 //启动Django server
restart: always
volumes:
- api_data:/docker_api
# (HOST:CONTAINER)
ports:
- "8000:8000"
# (HOST:CONTAINER)
depends_on: //express dependency
- db
volumes: //create volumes
api_data:
pgdata:
更多reference https://docs.docker.com/compose/compose-file/#compose-file-structure-and-examples
设定完成后 执行启动Dokcerdocker-compose up
###推荐一个Docker GUI管理工具 功能强大的 Portaniner 安装方法可参考 https://portainer.io/install.html 简单来说就是
docker volume create portainer_data
docker run --name=portainer -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
之后在浏览器运行 http://localhost:9000/ 进入管理界面