docker web应用多容器开发环境部署

开发环境的镜像来源有以下方式:

  • 从镜像仓库拉取。国外:http://hub.docker.com/(比较全,且Dockerfiles开源)国内有阿里云之类的镜像仓库,拉取速度比较快

  • 自己写Dockerfiles构建

  • 运行基础容器,链接进去搭建好环境,然后提交成新的镜像

连接容器

连接容器基本上通过exec命令,或者通过容器开启ssh进入管理,exec命令只能本机连接,ssh可以远程连接管理。两种方式各有优势,视乎场合灵活运用。

多容器的启动管理

Docker Compose是一个用来定义和运行复杂应用的Docker工具。使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作.

完整的命令列表如下:

build 构建或重建服务
help 命令帮助
kill 杀掉容器
logs 显示容器的输出内容
port 打印绑定的开放端口
ps 显示容器
pull 拉取服务镜像
restart 重启服务
rm 删除停止的容器
run 运行一个一次性命令
scale 设置服务的容器数目
start 开启服务
stop 停止服务
up 创建并启动容器

安装Docker Compose

curl -L https://github.com/docker/compose/releases/download/1.4.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod x /usr/local/bin/docker-compose

YAML 模板文件

参考一下这篇教程

docker-compose.yml文件示例

nginx:
  image: nginx:latest
  ports:
  - "80:80"
  links:
  - "php"
  volumes_from:
  - "php"
  volumes:
  - /home/ivan/nginx:/etc/nginx/conf.d/

php:
  image: php5.3.29-fpm:latest
  volumes:
  - /home/wwwroot:/var/www/html

redis:
  image: daocloud.io/daocloud/dao-redis:master-init
  ports:
  - "6379:6379"
  environment:
  - REDIS_PASS=**None**

memcached:
  image: daocloud.io/library/memcached:1.4.21
  ports:
  - "11211:11211"

容器的启动管理

Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动、重启、关闭进程(不仅仅是 Python 进程)。
除了对单个进程的控制,还可以同时启动、关闭多个进程,比如很不幸的服务器出问题导致所有应用程序都被杀死,此时可以用 supervisor 同时启动所有应用程序而不是一个一个地敲命令启动。
supervisord : supervisor的服务器端部分,启动supervisor就是运行这个命令
supervisorctl:启动supervisor的命令行窗口。

安装supervisor

Debian / Ubuntu可以直接通过apt安装:

# apt-get install supervisor

然后,给我们自己开发的应用程序编写一个配置文件,让supervisor来管理它。每个进程的配置文件都可以单独分拆,放在/etc/supervisor/conf.d/目录下,以.conf作为扩展名.

[inet_http_server] ; 侦听在TCP上的socket,Web Server和远程的supervisorctl都要用到他不设置的话,默认为不开启。非必须设置
port=127.0.0.1:9001 ; 这个是侦听的IP和端口,侦听所有IP用 :9001或*:9001。这个必须设置,只要上面的[inet_http_server]开启了,就必须设置它
username=user ; 这个和上面的uinx_http_server一个样。非必须设置
password=123 ; 这个也一个样。非必须设置

你可能感兴趣的:(其他)