Docker-compose实战——Django+PostgreSQL

今天我们来用docker-compose 快速安装一个Django+PostgreSQL的开发环境。

 

Compose简介

Compose 定位是“defining and running complex applications with Docker”,前身是 Fig,兼容 Fig 的模板文件。

Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项目),例如一个 Web 服务容器再加上后端的数据库服务容器等。

该项目由 Python 编写,实际上调用了 Docker 提供的 API 来实现。

安装docker-compose请戳这里,安装好后就让我们一起开始吧!

 

一、定义项目组件

1.1 创建一个空的项目目录

[root@localhost sparks]# mkdir django_test

  

1.2 在你的项目目录下创建一个名为Dockerfile文件

Docker 可以通过 Dockerfile 的内容来自动构建镜像。Dockerfile 是一个包含创建镜像所有命令的文本文件,通过docker build命令可以根据 Dockerfile 的内容构建镜像,在介绍如何构建之前先介绍下 Dockerfile 的基本语法结构。

想要了解更多 官方文档

 

1.3 添加如下的内容到Dockerfile

 FROM python:3  ENV PYTHONUNBUFFERED 1RUN mkdir /codeWORKDIR /codeADD requirements.txt /code/RUN pip install -r requirements.txtADD . /code/

  这个dockerfile文件开始于python3基础镜像,创建并移动工作目录至code目录,将requirements.txt添加到code目录中,并用pip命令安装该文件中的依赖包。

 

1.4 在你的项目目录下创建并添加如下内容至requirements.txt

 Django>=1.8,<2.0psycopg2

  

1.5 在你的项目目录下创建并添加如下内容至docker-compose.yml

version: '3'services:db:image: postgresweb:build: .command: python3 manage.py runserver 0.0.0.0:8000volumes:- .:/codeports:- "8000:8000"depends_on:- db

  这个文件定义了两个服务,数据库(db)服务和web服务, 想要了解更多请点击这里

 

二、创建Django项目

在这一步,用之前步骤创建的文件制作镜像并用这个镜像来创建Django项目

2.1  转至项目根目录,运行如下命令来创建Django项目

sudo docker-compose run web django-admin.py startproject composeexample .

  这里django-admin.py startproject composeexample需要使用web服务的镜像和配置,但是web镜像目前并不存在,所以compose自动在当前目录下寻找和创建该服务,

  具体可以参见docker-compose.yml中 build: . 这一行。

  一旦web服务镜像被创建,就在该容器中运行django-admin.py startproject 来创建Django项目

 

2.2 在上面的命令执行完后,查看你的项目目录文件

 $ ls -ldrwxr-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

  如果你是在linux上运行docker,manage.py文件属于root创建,因为在容器内运行都是用root用户,可以通过如下命令改变权限

sudo chown -R $USER:$USER .

  

三、连接数据库

在这一部分,我们将创建数据库并连接Django

3.1 在你的项目目录下,编辑composeexample/settings.py文件

3.2 将文件中DATABASES = ...替换为如下内容

DATABASES = {'default': {'ENGINE': 'django.db.backends.postgresql','NAME': 'postgres','USER': 'postgres','HOST': 'db','PORT': 5432,}
}

 

3.3 运行命令在你的项目根目录下

$ 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.

  到了这里,你的Django应用已经运行在docker主机的8000端口上啦,使用浏览器输入http://localhost:8000就可以看到Django的欢迎界面啦

 

3.4 查看正在运行的容器

  在另一个终端上,你可以通过 docker ps 命令查看正在运行的容器

$ 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

  一个web容器,一个postgre容器都在后台运行中,至此我们已经大功告成啦!

  

转载于:https://www.cnblogs.com/LiCheng-/p/6963779.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

终于赢球了

感谢老将易建联我们要承认一个事实&#xff0c;阿联是这届男篮里面的老将&#xff0c;是唯一一个80后球员&#xff0c;很多人不了解老将意味着什么&#xff0c;很多打篮球的人都有一个感觉&#xff0c;在高中时代的时候&#xff0c;打球的时候经常在天上飞来飞去不觉得累&#…

Zookeeper原理和实战开发经典视频教程 百度云网盘下载

Zookeeper原理和实战开发 经典视频教程 百度云网盘下载 资源下载地址&#xff1a;http://pan.baidu.com/s/1o7ZjPeM 密码&#xff1a;r5yf 转载于:https://www.cnblogs.com/heitaok/p/6979781.html

C语言大神进来看看这个题目

之前一个读者给我发的一个题目&#xff0c;我大概看了下&#xff0c;题目的难度还是比较大的&#xff0c;而且考察的内容也比较多&#xff0c;可能在实际项目上使用比较少&#xff0c;估计十几年的老码农都没有用过&#xff0c;但是在看大神的代码的时候&#xff0c;就特别考验…

qq浏览器主页_安卓浏览器哪家强?这些小众好用的手机浏览器你知道吗

前言无论手机还是电脑&#xff0c;浏览器都可以说是最重要的软件之一了。最流行的 Chrome 和 Firefox&#xff0c;国内常见的还有 UC、QQ、360 浏览器等。手机上可供选择的优秀浏览器还有很多&#xff0c;这次就推荐些其他的小众但是也很好用的安卓手机浏览器。安卓手机浏览器推…

ms access to mysql_Access转MySQL工具

Bullzip MS Access To MySQL是一个Access转MySQL工具&#xff0c;可以帮助用户把MS Access数据库中的内容转到MySQL数据库中&#xff0c;支持全部转换以及有选择的转换&#xff0c;支持命令行&#xff0c;非常适合有Access转MySQL需求的数据库维护人员使用。Bullzip MS Access …

_一文让你透彻理解Linux的SOCKET编程(含实例解析)

1. 网络中进程之间如何通信进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行&#xff0c;为保证两个相互通信的进程之间既互不干扰又协调一致工作&#xff0c;操作系统为进程通信提供了相应设施&#xff0c;如UNIX BSD有&#xff1a;管道&#xff08;…

老师好

今天是教师节&#xff0c;今年楠哥也上幼儿园了&#xff0c;以后估计会经常跟老师有接触&#xff0c;我楼上的一个邻居&#xff0c;叫老莫&#xff0c;跟我的关系很好&#xff0c;有钱&#xff0c;又有儿有女&#xff0c;大女儿现在已经上小学了&#xff0c;每天上班的时候&…

Linux 下的推迟执行

准备中秋节说个活动&#xff0c;评论文章点赞排名&#xff0c;用心评论哦&#xff0c;前5名获得每人 19 心意红包。感谢大家的支持我最近在用freertos&#xff0c;想让一个任务在某个时间后再执行&#xff0c;找了一圈&#xff0c;竟然没有这样才处理机制&#xff0c;因为也是新…

js 获得明天0点时间戳_js实现一个简单钟表动画(javascript+html5 canvas)

自己学生时代的代码&#xff0c;发现还保存着&#xff0c;今天拿出来分享下。用js和html5 canvas对象实现一个简单钟表程序主要用到的就是h5的canvas对象canvas对象本人也不是很熟&#xff0c;大致看了几个常用的方法&#xff0c;难免有不足之处&#xff0c;仅是练习所用。实现…

mysql 根据当前时间戳_mysql timestamp类型 根据当前时间戳更新

注意到这个是因为一次事故。一个简单的操作记录表&#xff0c;只记录了一个操作人&#xff0c;操作时间&#xff0c;操作结果。当时为了演示效果&#xff0c;在生产环境中去修改&#xff0c;创建数据。一顿操作猛如虎之后发现&#xff0c;所有改过的数据的创建时间都变成了当前…

设置拖拽事件,获取拖拽内容

设置dragEnter 设置DragDrop using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; using…

笔记本电脑锁_2020年双11有哪些值得选购的笔记本电脑?(全能本/便携高性能笔记本电脑/设计本)...

&#xff08;本文于2020年10月22日更新&#xff09;本文章会不定期更新&#xff0c;保证文章的时效性和准确性&#xff0c;可点赞或收藏本文章&#xff0c;这样在需要的时候可以找到啦。文章推荐产品较多&#xff0c;按价位排序&#xff0c;篇幅较长&#xff0c;可按键盘CtrlF快…

300来行代码实现最小Linux文件系统

Linux作为一个类UNIX系统&#xff0c;其文件系统保留了原始UNIX文件系统的表象形式&#xff0c;它看起来是这个样子&#xff1a;rootname-VirtualBox:/# lsbin boot cdrom dev etc home lib lib64 lostfound media mnt opt proc root run sbin snap srv sys …

淘宝怎么多个订单一起付款_淘宝未付款订单如何催付?

淘宝未付款订单如何催付&#xff1f;很多人只认为运营就是技巧&#xff0c;其实客服也是需要技巧的&#xff0c;客服也是关键的数据支撑。一个好的客服团队&#xff0c;能够很好地提高转化率、客单价、复购率&#xff0c;有效的降低退款率、纠纷等售后问题。今天和大家分享一下…

爱大姚,恨男篮

先祝姚明生日快乐2019年9月12日。是中国篮协主席、CBA董事长姚明39岁的生日&#xff0c;时间已经过去几天了&#xff0c;当时铺天盖地的都是其他的热点新闻&#xff0c;很多人&#xff0c;包括我也忘记了这个大个子已经39岁了&#xff0c;看着中国男篮的惨败&#xff0c;很想冲…

Linux 内核系统架构

描述Linux内核的文章已经有上亿字了但是对于初学者&#xff0c;还是应该多学习多看&#xff0c;毕竟上亿字不能一下子就明白的。即使看了所有的Linux 内核文章&#xff0c;估计也还不是很明白&#xff0c;这时候&#xff0c;还是需要fucking the code.28年前(1991年8月26日)Lin…

gif透明背景动画_如何利用premiere制作GIF动态图片

GIF制作流程(也可以用此教程把视频变成GIF动图)作者&#xff1a;益红一、导出设计文件将要做动画的文件在ps里面导出 (透明图层用PNG)(也可以将合适的视频片段作为素材)二、在PR里面新建项目打开 Adobe premiere选择 新建项目找到新建项目 — 命名 —设置合适的项目 位置-点击浏…

离职了

这是我毕业后的第一份工作...面试时&#xff0c;HR小姐姐告诉我...然鹅...我入职之后才发现&#xff1a;对标阿里的只有加班强度对标华为的只有狼性文化对标百度的&#xff0c;额&#xff0c;没有对标百度同事们有的住在海淀区、有的住在朝阳区&#xff0c;作为刚毕业的一枚“穷…

windows7官方原版_如何下载微软原版操作系统、办公软件

如何下载微软原版操作系统、办公软件&#xff1f;简介&#xff1a;微软操作系统从MS-DOS到Windows XP&#xff0c;Windows 7&#xff0c;Windows 8&#xff0c;再到现在的Windows 10 &#xff0c;一代比一代强&#xff0c;每代都有自己的特点。现在我们能从官网上下载到的只有W…

CPU是如何访问到内存的?

讨论的重点我们知道CPU有地址总线&#xff0c;数据总线和控制总线数据总线&#xff08;Data Bus&#xff09;&#xff1a;在CPU与RAM之间来回传送需要处理或是需要储存的数据。地址总线&#xff08;Address Bus&#xff09;&#xff1a;用来指定在RAM&#xff08;Random Access…