首先在ubuntu系统中安装Docker,然后安装Docker Compose。
接下来开始在Docker中安装django。
一:定义组件
1.创建一个空目录,例如AAA。
2.在AAA目录中创建一个Dockerfile文件。
3.把下面的内容放入Dockerfile文件中。
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/
4.保存并关闭Dockerfile文件。
5.创建requirements.txt文件。
6.把下面的内容放入到requirements.txt文件中。
Django>=1.8,<2.0
psycopg2
7.保存关闭requirements.txt文件。
8.创建docker-compose.yml文件。
9.把下面的内容放入docker-compose.yml文件中。
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
10.保存关闭docker-compose.yml文件。
二:创建django project
1.进入AAA目录中。
2.运行命令:
docker-compose run web django-admin.py startproject composeexample .
3.使用命令:
$ ls -l
drwxr-xr-x 2 root root composeexample
-rw-rw-r-- 1 user user docker-compose.yml
-rw-rw-r-- 1 user user Dockerfile
-rwxr-xr-x 1 root root manage.py
-rw-rw-r-- 1 user user requirements.txt
把权限修改为用户,命令:
sudo chown -R $USER:$USER .
三:连接数据库
1.编辑composeexample/settings.py文件。
2.把DATABASES=…替换成下面的:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
3.保存关闭文件。
4.使用命令:
$ docker-compose up
djangosample_db_1 is up-to-date
Creating djangosample_web_1 ...
Creating djangosample_web_1 ... done
Attaching to djangosample_db_1, djangosample_web_1
db_1 | The files belonging to this database system will be owned by user "postgres".
db_1 | This user must also own the server process.
db_1 |
db_1 | The database cluster will be initialized with locale "en_US.utf8".
db_1 | The default database encoding has accordingly been set to "UTF8".
db_1 | The default text search configuration will be set to "english".
. . .
web_1 | May 30, 2017 - 21:44:49
web_1 | Django version 1.11.1, using settings 'composeexample.settings'
web_1 | Starting development server at http://0.0.0.0:8000/
web_1 | Quit the server with CONTROL-C.
5.在另一个terminal中使用命令:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
def85eff5f51 django_web "python3 manage.py..." 10 minutes ago Up 9 minutes 0.0.0.0:8000->8000/tcp django_web_1
678ce61c79cc postgres "docker-entrypoint..." 20 minutes ago Up 9 minutes 5432/tcp django_db_1
6.关闭container。使用命令:
$ docker-compose down
Stopping django_web_1 ... done
Stopping django_db_1 ... done
Removing django_web_1 ... done
Removing django_web_run_1 ... done
Removing django_db_1 ... done
Removing network django_default
这样container就关闭了。
以上就是在Docker中部署django的方法。