问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何构建基于docker的开发环境

发布网友 发布时间:2022-04-21 17:34

我来回答

1个回答

热心网友 时间:2022-04-10 01:51

一、基本思路

1. 创建一个用于开发Django App的目录

mkdir django-example && cd django-example

2. 构建基本开发环境

touch Dockerfile
touch pip.conf requirements.txt

pip.conf文件填入以下内容,以便一会用pip安装Python 模块时使用阿里云镜像加速:

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

requirements.txt文件中填入要安装的Python 模块:

django

编写构建开发环境的Dockerfile文件,填入以下内容:

# MAINTAINER        Gevin <flyhigher139@gmail.com>
# DOCKER-VERSION    1.12.0
#
# Dockerizing Python: Dockerfile for building python applications


FROM python:2.7.12
MAINTAINER Gevin <flyhigher139@gmail.com>

WORKDIR /usr/src/app

# 使用阿里云的pip镜像
COPY pip.conf /root/.pip/pip.conf
COPY requirements.txt /usr/src/app/requirements.txt
RUN pip install -r /usr/src/app/requirements.txt

EXPOSE 8000

CMD ["bash"]

然后执行下面命令构建镜像:

docker build -t gevin/django-example:0.1 .

构建成功后,执行docker images命令,可以查看到当前构建好的image

docker images

REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
gevin/django-example   0.1                 1855fc3c8062        12 hours ago        698.9 MB

3. 使用构建的image拉起开发环境

执行下面命令,可以以前台形式拉起django-example镜像的一个container:

docker run -it --rm -v $(pwd):/usr/src/app gevin/django-example:0.1

上面命令使用了data volume,把当前目录挂载到container中的工作目录下,这样当前目录下的所有文件都会映射到container的工作目录下,在工作目录下的所有改动,也都会保存到宿主机的当前目录下。

4. 创建django项目

上一步的命令创建了一个安装了django的交互式的container,直接在该container中执行创建django项目的命令即可:

root@7c91f460599f:/usr/src/app# django-admin startproject dj_example

上述命令,在container中基于django的命令创建了一个django项目,由于上一步操作时把宿主机的当前目录挂载到container的工作目录下,因此,刚刚在container中创建的django项目,在宿主机上也能看到。

container:

root@7c91f460599f:/usr/src/app# lsDockerfile  dj_example    pip.conf  requirements.txt

宿主机:

django-example ls
Dockerfile       dj_example       pip.conf         requirements.txt

5. 启动django项目

docker run -it --rm -p 8000:8000 -v $(pwd):/usr/src/app gevin/django-example:0.1 python dj_example/manage.py runserver 0.0.0.0:8000

二、Docker-compose与Django环境的结合

每次使用上面章节中介绍的冗长命令来使用django环境非常麻烦,docker-compose可以简化操作。

首先在当前目录下创建docker-compose.yml文件:

➜  django-example touch docker-compose.yml

然后在该文件中写入如下内容:

version: '2'
services:
django-example:
image: gevin/django-example:0.1
volumes:
- ./dj_example:/usr/src/app
ports:
- 8000:8000
command: python manage.py runserver 0.0.0.0:8000

执行下面命令即可拉起django服务:

➜  django-example docker-compose up# Starting djangoexample_django-example_1# Attaching to djangoexample_django-example_1

在浏览器中访问http://localhost:8000,即可看到默认的django页面

注:

上面的docker-compose文件,把./dj_example目录挂载到/usr/src/app,免去执行django命令时,需要对应到下级目录的麻烦,但这样隐藏了原来container中的requirements.txt文件,需要注意。

基于docker-compose 执行django 命令

使用docker-compose 的 run命令,可以在容器内执行相应操作,如:

对django服务的数据库做migrate操作:

docker-compose run django-example python manage.py migrate

创建超级用户:

docker-compose run django-example python manage.py createsuperuser# Username (leave blank to use 'root'): gevin# Email address:# Password:# Password (again):# Superuser created successfully.

创建成功后,访问http://localhost:8000/admin,即可使用刚创建的用户(即gevin),登录数据库管理页面

由于使用了数据卷,保存在sqlite数据库中的数据会一直有效。

三、简化方案

上面方案已经成功构建了django 环境,并应用于开发。上面的方案主要是为了阐述实现思路,在实际操作起来至少有两个麻烦:(1)需要进入容器里面创建django项目;(2)由于django项目是建立在当前目录的子目录下,使用docker-compose 时为了命令简单通用,更换了数据卷。

在实践中,利用docker-compose的run命令,没必要进入容器创建django项目;只要把django项目建立在当前目录下,也没必要更换数据卷了。

因此,可以把上面的方案再理一下,按下面步骤构建开发环境,并应用到开发中去。

Outline:

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在波兰的签证率高不高 去波兰如何办签证 去波兰办签证好办理吗 波兰签证好签吗 win7 多重网络 教师资格证普通话要多少级 想考教师资格证普通话必须过几级 qq影视会员SVIP和超级影视VIP的区别在哪里? 一小撮怎么造句 盛行一时怎么造句 手机怎么连接外网服务器 燃气热水器打不着火e5 自动化运维经验谈,以及为什么Docker是革命性的 1.2 为什么要使用Docker 如何部署 Docker Registry 服务 如何自动化nginx负载 多个docker 热水器故障E5怎样解决? docker有个啥用啊 如何使用Ansible自动化部署Docker镜像 干点酸奶怎么做的呢 用酸奶机怎么做酸奶,可以加入葡萄干吗 酸奶葡萄干好吃吗? 葡萄干能不能和酸奶一起吃? 葡萄干酸奶能一起吃吗 做酸奶可以放葡萄干吗? 如何用酸奶制作小零食? 葡萄可以和酸奶一起吃吗 葡萄干做法大全 葡萄干做美食简单的 山楂葡萄干酸奶怎么做 手机如何连接外网服务器 公司的服务器怎么连接外网? 燃气热水器打开总是响,屏幕显示e5 如何让服务器连上外网 为什么要用Fig来实现Docker自动化 局域网怎么连接外网? 假如做了一个服务器,那么服务器怎样才能连接到外网? Docker有哪些主要的技术知识点? 怎么样远程通过外网连接到服务器上? docker的优秀性能有哪些 TCP通讯怎么连接到外网的服务器 做了个软件,但不知道如何连接外网用户 家里电脑怎么连接局外网服务器 怎么用TCP协议通过外网连接服务器 如何访问到外网的ftp服务器地址 医院机房新购服务器如何连接外网? VNC 远程控制 怎么连接到外网 我采用的是路由的.具... 请问我如何让自己服务器接入外网,就是能绑定域名... 局域网内的电脑如何通过服务器访问外网? 怎么远程控制外网的服务器