docker版Django
原文地址:http://kekefund.com/2017/03/30/docker-django/ (本人博客)
Django的运行是基于python的环境,加上django包。在docker中运行django,实现方式是从docker下载python镜像,然后安装django运行所依赖的包。
在https://store.docker.com/images/python?tab=description 中介绍pull镜像方式有一种叫python:onbuild。
这种镜像创建方式根据项目中提供的requirements.txt文件自动pip安装依赖包。大多数情况,通过python:onbuild能创建一个满足工程所需的独立镜像。
一、编写requirements.txt
下述的目录结构是一个Django Rest Framework例子,其中项目名称为restful,app名称为api。
首先我们需要把项目所依赖的包放到requirements.txt中:
Django==1.8 django-bootstrap-toolkit==2.15.0 django-filter==1.0.1 djangorestframework==3.5.4 djangorestframework-jwt==1.10.0 pandas==0.19.2 SQLAlchemy==1.1.4 MySQL-python==1.2.5
二、编写Dockerfile
本文是基于python2.7制作的,Dockerfile文件如下:
FROM python:2-onbuild CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8000"]
CMD命令执行Django启动程序,0.0.0.0是对所有IP开放,监听端口8000。
需要说明的是CMD中的每个参数得单独分开,像这样"runserver 0.0.0.0:8000"是运行不成功的。
2.1 pip 国内镜像
先创建pip.conf文件,使用阿里云作为镜像:
[global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com
在创建Dockerfile:
FROM python:3.5 RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY pip.conf /root/.pip/pip.conf COPY requirements.txt /usr/src/app/ RUN pip install -r /usr/src/app/requirements.txt RUN rm -rf /usr/src/app COPY . /usr/src/app CMD [ "python", "./manage.py", "runserver", "0.0.0.0:8091"]
三、构建镜像
- $ docker build -t my-python-app .
[cbb@number_api]$ docker build -t number_api_django:0.3 . Sending build context to Docker daemon 655.9 kB Step 1/2 : FROM python:2-onbuild # Executing 3 build triggers... Step 1/1 : COPY requirements.txt /usr/src/app/ Step 1/1 : RUN pip install --no-cache-dir -r requirements.txt ---> Running in 4711187b3011 Collecting Django==1.8 (from -r requirements.txt (line 2)) Downloading Django-1.8-py2.py3-none-any.whl (6.2MB) Collecting django-bootstrap-toolkit==2.15.0 (from -r requirements.txt (line 3)) Downloading django-bootstrap-toolkit-2.15.0.tar.gz Collecting django-filter==1.0.1 (from -r requirements.txt (line 4)) Downloading django_filter-1.0.1-py2.py3-none-any.whl (54kB) Collecting djangorestframework==3.5.4 (from -r requirements.txt (line 5)) Downloading djangorestframework-3.5.4-py2.py3-none-any.whl (709kB) Collecting djangorestframework-jwt==1.10.0 (from -r requirements.txt (line 6)) Downloading djangorestframework_jwt-1.10.0-py2.py3-none-any.whl Collecting pandas==0.19.2 (from -r requirements.txt (line 7)) Downloading pandas-0.19.2-cp27-cp27mu-manylinux1_x86_64.whl (17.2MB) Collecting SQLAlchemy==1.1.4 (from -r requirements.txt (line 8)) Downloading SQLAlchemy-1.1.4.tar.gz (5.1MB) Collecting MySQL-python==1.2.5 (from -r requirements.txt (line 9)) Downloading MySQL-python-1.2.5.zip (108kB) Collecting PyJWT<2.0.0,>=1.4.0 (from djangorestframework-jwt==1.10.0->-r requirements.txt (line 6)) Downloading PyJWT-1.4.2-py2.py3-none-any.whl Collecting pytz>=2011k (from pandas==0.19.2->-r requirements.txt (line 7)) Downloading pytz-2016.10-py2.py3-none-any.whl (483kB) Collecting numpy>=1.7.0 (from pandas==0.19.2->-r requirements.txt (line 7)) Downloading numpy-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl (16.5MB) Collecting python-dateutil (from pandas==0.19.2->-r requirements.txt (line 7)) Downloading python_dateutil-2.6.0-py2.py3-none-any.whl (194kB) Requirement already satisfied: six>=1.5 in /usr/local/lib/python2.7/site-packages (from python-dateutil->pandas==0.19.2->-r requirements.txt (line 7)) Installing collected packages: Django, django-bootstrap-toolkit, django-filter, djangorestframework, PyJWT, djangorestframework-jwt, pytz, numpy, python-dateutil, pandas, SQLAlchemy, MySQL-python Running setup.py install for django-bootstrap-toolkit: started Running setup.py install for django-bootstrap-toolkit: finished with status 'done' Running setup.py install for SQLAlchemy: started Running setup.py install for SQLAlchemy: finished with status 'done' Running setup.py install for MySQL-python: started Running setup.py install for MySQL-python: finished with status 'done' Successfully installed Django-1.8 MySQL-python-1.2.5 PyJWT-1.4.2 SQLAlchemy-1.1.4 django-bootstrap-toolkit-2.15.0 django-filter-1.0.1 djangorestframework-3.5.4 djangorestframework-jwt-1.10.0 numpy-1.12.1 pandas-0.19.2 python-dateutil-2.6.0 pytz-2016.10 Step 1/1 : COPY . /usr/src/app ---> 712a54b6b923 Removing intermediate container df33c056f7c0 Removing intermediate container 4711187b3011 Removing intermediate container 6220af43bf96 Step 2/2 : CMD python ./manage.py runserver 0.0.0.0:8000 ---> Running in 53c0cf32d840 ---> 17c97bc704d9 Removing intermediate container 53c0cf32d840 Successfully built 17c97bc704d9 [cbb@number_api]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE number_api_django 0.3 17c97bc704d9 23 seconds ago 868 MB
这样就成功创建了镜像number_api_django:0.3
四、运行容器
- docker run
[cbb@number_api]$ docker run -it --rm -p 8080:8000 --name api1 number_api_django:0.3 Performing system checks... System check identified no issues (0 silenced). March 30, 2017 - 07:34:03 Django version 1.8, using settings 'restful.settings' Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C.
这样就启动了django程序。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
docker部署mysql
原文地址:http://kekefund.com/2017/03/19/docker-mysql/ (本人博客) mysql在linux服务器上运行一直比较稳定,但是服务器迁移时mysql在新服务器上的配置是个比较头疼的问题,搞不好数据迁移过来了但是mysql启动不起来,坑比较多。特别是当新的服务器是离线时,安装mysql和数据同步软件更是困难重重。 用docker来运行mysql服务是一个比较好的解决方案,mysql的运行环境在容器内已经封装好了,而数据可以直接挂载在宿主主机上。 一、下载镜像 官网地址:https://hub.docker.com/_/mysql/ docker pull mysql 查看镜像 [root@VM_25_5_centos ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/mysql latest 22be5748ecbe 13 days ago 405.6 MB 二、启动容器 $ docker run --name cbb-mysql1 -p 3307:3306 -v /h...
- 下一篇
docker版私人网盘ownCloud
原文地址:http://kekefund.com/2017/04/19/docker-owncloud/ (本人博客) ownCloud是一个自由且开源的个人云存储解决方案。ownCloud在客户端可通过网页界面,或者安装专用的客户端软件来使用。网页界面当然就是任何能开网页的平台都支持,而客户端软件也支持相当多平台,Windows、Linux、iOS、Android皆有。 除了云存储之外,ownCloud也可用于同步日历、电子邮件联系人、网页浏览器的书签;此外还有多人在线文件同步协作的功能(类似google documents或Duddle等等)。 ownCloud官方提供了Docker版的ownCloud,部署安装能一步到位。 如何使用Docker 开始使用 直接运行: $ docker run -d -p 80:80 owncloud:8.1 然后进入 http://localhost/,根据向导配置。默认情况下使用SQLite作为数据储存。对于MySQL数据库,可以通过容器连接,例如:--link my-mysql:mysql。 数据持久化 所有的数据在数据库中管理,数据保存在/...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Docker快速安装Oracle11G,搭建oracle11g学习环境