Docker学习实践

部署一个Django应用,要使用nginx、uwsgi、redis和mysql;nginx、redis和mysql都有现成的docker镜像、只需要一个python2.7的镜像安装uwsgi启动项目,然后这几个docker连起来,就OK啦。

实现步骤:

  1. 安装docker,下载需要的镜像
  2. 启动数据库:mx_mysql和mx_redis
  3. 启动uwsgi和celery,这里使用link链接mx_mysql和mx_redis,项目配置中的ip更改为容器别名mysql和redis
  4. 启动nginx,注意link连接mx_online,配置文件upstream中要改为别买web

首先,安装docker

1 yum install docker   #一句搞定

启动

1 service docker start
2
3 chkconfig docker on     #开机启动

下载镜像

1 docker pull mysql:5.6
2 docker pull redis:3.2
3 docker pull nginx
4 docker pull python:2.7

先启动数据库

mysql

1 docker run -d -p 3306:3306 --name mx_mysql -v $PWD/conf/:/etc/mysql/conf.d -v $PWD/data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 

-p:端口映射,开放3306

-name:名字

-v:文件挂载,配置文件、日志文件、数据文件。cp /etc/my.cnf /root/conf/my.cnf 注释掉最后一行(有时间可以详细配置)

-e:环境变量

下载慢就用DaoCloud加速

1 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://******.m.daocloud.io

redis

1 docker run -d -p 6379:6379 -v $PWD/data/redis:/data --name mx_redis redis:3.2 redis-server --appendonly yes

启动Django

通过Dockerfile启动python

 1 FROM python:2.7
 2 ENV PYTHONUNBUFFERED 1
 3
 4 MAINTAINER WangJie <717728534@qq.com>
 5
 6 ADD ./requirements.txt /tmp/requirements.txt
 7
 8 RUN pip install -r /tmp/requirements.txt   9     && pip install uwsgi 10     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
11
12 EXPOSE 8000
13
14 WORKDIR /online

执行build

1 docker build -t="django" .

成功了,然后运行

docker run -d -p 8000:8000 -v /root/online:/online --name mx_online django uwsgi --http :8000 -w online.wsgi -p 3

访问http://ip:8000可以成功了,但是发不了邮件。再来一个mx_celery.

1 docker run -d -v /root/online:/online --name mx_celery --link mx_mysql:mysql --link mx_redis:redis django celery -A online worker -l info 

好了,访问http://ip:8000,注册成功,邮件也有了。

启动nginx

docker run -p 80:80 --name mx_nginx -v $PWD/online/conf/mx_nginx.conf:/etc/nginx/conf.d/mx_nginx.conf --volumes-from mx_online -d nginx

启动成功,通过IP访问正常。

最后启动容器有5个:

访问过程是这样的:

搞着这搞了两天了,采了不少坑,终于搞定了。项目结构太乱以后再改。

1.-v 挂载文件,重启容器就可以更新

2.--link 父容器:别名,容器可以通过别名访问父容器

3.在root用户和~目录下操作,build镜像要进入online目录

4.mysql要创建online数据库,建表到数据,注意字符集

5.nginx配置文件要注意修改

6.uwsgi使用--http测试,用nginx改为-s

时间: 2024-10-18 20:28:09

Docker学习实践的相关文章

docker学习实践之路[第五站]mysql镜像应用

拉取mysql镜像 docker pull mysql:5.6 #拉取mysql 5.6版本的镜像 运行mysql镜像 docker run --name some-mysql -v /mnt/db:/var/lib/mysql -e [email protected]123 -p 3306:3306 -d mysql:5.6 #-p指定mysql的对外端口 #-e为设置环境变量,MYSQL_ROOT_PASSWORD=123 设置root用户密码为123 #-v设置mysql的存储数据地址,由

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整) 本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习.原文地址,http://dockone.io/article/101. 文中一些链接可能会跳转国外的网站,如果没有插件或开VPN的朋友,可以尝试修改一下Hosts文件,如何修改Hosts文件.或者使用XXNet插件,如何使用XXnet 介绍 Docker是一个新的容器化的技术,它轻巧,且易移植,号称"build once, configure

Docker学习一: 基本概念

特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1. Docker学习一: 基本概念 ================================= Docker简介(容器化技术) Docker 在容器的基础上,进行了进一步的封装,从文件系统.网络互联到进程隔 离等等,极大的简化了容器的创建和维护.使得 Docker 技术比虚拟机技术更为轻 便

【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World

操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service docker stop  #停止服务 service docker restart #重启服务 service docker status   #查看服务状态 启动Docker服务 docker是一个CS模型,需要先启动服务端,直接执行 sudo service docker start 启动docker

docker 学习路线

docker 学习路线 参考资料 知乎 docker 的学习路线 Docker - 从入门到实践 Docker 核心技术与实现原理 Docker 入门 <Kubernetes in Action>,想要学习 Kubernetes 的读者一定不要错过. 编程能力影响最大的两本书就是: <计算机程序的构造和解释>(Structure and Interpertation of Computer Programming,SICP) <计算机程序的概念.技术和模型>(Conce

Docker 学习笔记【1】Docker 相关概念,基本操作

计划:Docker 学习笔记[2] Docker 基础操作实操记录,Docker仓库.数据卷,网络基础学习---40 注:所有操作在root下执行 --1--概念: 1.Docker镜像: 镜像就是一个只读的模板,用于创建docker容器. Docker提供了简单的机制创建或者更新现有镜像,也可以从别处拿来现成镜像直接使用. 2.Docker容器: 可以认为是精简版的linux运行环境包含 [root权限,进程空间,用户空间,网络空间等]和应用程序 另外:镜像是只读的,容器基于镜像启动后创建一层

深度学习实践系列(2)- 搭建notMNIST的深度神经网络

如果你希望系统性的了解神经网络,请参考零基础入门深度学习系列,下面我会粗略的介绍一下本文中实现神经网络需要了解的知识. 什么是深度神经网络? 神经网络包含三层:输入层(X).隐藏层和输出层:f(x) 每层之间每个节点都是完全连接的,其中包含权重(W).每层都存在一个偏移值(b). 每一层节点的计算方式如下: 其中g()代表激活函数,o()代表softmax输出函数. 使用Flow Graph的方式来表达如何正向推导神经网络,可以表达如下: x: 输入值 a(x):表示每个隐藏层的pre-acti

Docker 学习笔记【2】 Docker 基础操作实,Docker仓库、数据卷,网络基础学习

Docker 学习笔记[3] Docker 仓库实操,创建私有仓库,实操数据卷.数据卷容器,实操 网络基础  ---------高级网络配置和部分实战案例学习 ============================================================= Docker 学习笔记[1]Docker 相关概念,基本操作--------实操记录开始 ============================================================= 被

Nagios学习实践系列——基本安装篇

开篇介绍 最近由于工作需要,学习研究了一下Nagios的安装.配置.使用,关于Nagios的介绍,可以参考我上篇随笔Nagios学习实践系列--产品介绍篇 实验环境 操作系统:Red Hat Enterprise Linux Server release 6.0 (Santiago)   64 bit. 注意,Nagios只能安装在Linux或Unix平台,不支持Windows平台,当然,它可以监控Windows平台. 环境准备 Apache 和PHP 不是安装Nagios所必须的,其实也可以说