Docker 搭建开发环境
有一个 Python2 项目,依赖 RabbitMQ、Redis、MySQL
RabbitMQ 的安装繁琐,并且自身还需要安装其他依赖
项目本身还使用了几个图形库,在不同的开发环境(Win、Mac、Linux)下依赖包是有差别的
我的开发环境是 Windows,搭建这样一套环境十分麻烦,如果使用 Docker 就会方便许多。
Docker MySQL
获取镜像
docker pull mysql:5.6
启动容器,密码 123456,映射 3306 端口
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
进入容器,创建远程访问用户
docker exec -it <容器> /bin/bash
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
flush privileges;
Docker Redis
拉取镜像
docker pull redis:5.0
启动容器,映射端口 6379
docker run -p 6379:6379 -d --name redis-5.0 redis:5.0
Docker RabbitMQ
拉取镜像
docker pull rabbitmq
启动容器,端口会自动映射
hostname 是容器的主机名称
docker run -d --hostname my-rabbit --name rabbitmq rabbitmq:latest
进入容器,可以查看 RabbitMQ 状态
docker exec -it <容器> /bin/bash
rabbitmqctl status
Docker Python2.7
各种依赖已经安装完毕,现在搭建 Python 的运行环境
拉取镜像
docker pull python:2.7
启动容器
-p 8000:8000 映射端口,是项目的访问端口
-v ~/workspace:/root/workspace 把 home 目录下的 workspace 目录,映射到 /root/workspace 目录,这个目录下是代码
--privileged=true 解决 docker 内目录无权限访问问题
--link mysql:mysqldb 有三个 link 参数,以 mysql 为例,意思是创建 mysql 的 host 映射,名称为 mysqldb,也就是说可以通过 ping mysqldb ,访问 mysql 容器
docker run -itd -p 8000:8000 -v ~/workspace:/root/workspace --privileged=true --link mysql:mysqldb --link redis-5.0:redisdb --link rabbitmq:rabbitmq --name dev_docker python:2.7
需要说明,这是个 django 项目,下面的启动方式只能在 docker 内部访问
因为默认监听的是 localhost,只监控本机请求
python manage.py runserver 8000
以下命令就可以在外部访问了
python manage.py runserver 0.0.0.0:8000