本文主要是介绍Docker - 入门DockerCompose与Django,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本文说明如何使用docker-compose运行一个简单的Django/PostgreSQL应用。在这之前,记得先安装好docker和docker-compose
参考链接 https://docs.docker.com/compose/django/
定义工程的镜像
首先,先列出三个重要的会使用到的文件
Dockerfile
- Python依赖文件
docker-compose.yml
文件
接下来,我们从工程创建一步步开始
- 创建一个空文件夹
即工程的文件夹,会包含工程的代码,以及以上三个列出的文件 - 创建一个
Dockerfile
文件
Dockerfile
定义了该应用的镜像。一但build完成之后,可以在容器里运行起来该镜像。关于更多的Dockerfile
的信息,可以查看Dockerfile reference - 添加以下信息到
Dockerfile
添加的配置如下
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/
该镜像的基础是Python 3
的镜像,通过把requirements.txt
文件添加进去,原始Python 3
的镜像修改就是增加了新的Python依赖
-
保存并关闭
Dockerfile
-
在工程目录下创建一个
requirements.txt
文件
该文件会在Dockerfile
中用到,就是命令RUN pip install -r requirements.txt
-
添加下列依赖到文件里面去
Django>=2.0,<3.0
psycopg2>=2.7,<3.0
- 保存并退出
requirements.txt
文件 - 创建
docker-compose.yml
文件
docker-compose.yml
文件描述了组成应用的所需服务。在我们的这个例子里面,需要的服务是一个web server和一个database。compose文件定义的内容包括:(1)服务使用了哪些镜像(2)服务之间如何关联(3)挂载了哪些目录(4)暴露了哪些端口。如果需要更多关于docker-compose.yml
文件的信息,可以查看docker-compose Reference
内容可定义如下:
version: '3'services:db:image: postgresenvironment:- POSTGRES_DB=postgres- POSTGRES_USER=postgres- POSTGRES_PASSWORD=postgresweb:build: .command: python manage.py runserver 0.0.0.0:8000volumes:- .:/codeports:- "8000:8000"depends_on:- db
-
保存并退出
docker-compose.yml
-
创建一个Django项目
以下省略… -
Django项目连接数据库
修改settings.py
文件,其中数据库配置如下
DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': 'postgres','USER': 'postgres','PASSWORD': 'postgres','HOST': 'db','PORT': 5432,}
}
这些配置项都在docker-compose.yml
中已配置。
- 在根目录运行命令
docker-compose up
$ 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.
然后你就可以通过http://localhost:8000
访问了
这篇关于Docker - 入门DockerCompose与Django的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!