Home »  云计算 » 研发环境容器化

研发环境容器化使用指南

1 环境要求

1.1 安装 Docker

若您使用Ubuntu,步骤如下:

更换 Ubuntu 软件源为国内源(可选)

若已经更换为了速度较快的源,可跳过此步骤或更换为其他更快的源

cd /etc/apt

# 备份默认软件源
sudo mv sources.list sources.list.bak

# 创建新的 sources.list
sudo vim sources.list

# 添加下列内容到 sources.list 中
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

# 更新软件列表
sudo apt-get update

缷载旧版本的 Docker

sudo apt-get remove docker docker-engine docker.io

安装新版 Docker

sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update
sudo apt-get install docker-ce

设置 Docker 镜像源,加速下载

修改配置文件 /etc/default/docker 的 DOCKER_OPTS为:

DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io"

注意:上面的地址可自行更换为速度较快的镜像源

添加公司镜像源

在 /etc/docker/ 下新建 daemon.json,添加以下内容:

{ "insecure-registries":["192.168.0.247:80"] }

重启 Docker

service docker restart

注册公司镜像服务用户并登录

访问 http://192.168.0.247,点击 注册账号 按钮,根据提示操作。

完成注册后,使用以下命令登录:

sudo docker login -u <你的注册名> 192.168.0.247:80

其他Linux发行版的安装过程,请参考https://docs.docker.com/engine/installation/

1.2 安装 Docker Compose

sudo curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

2 搭建开发环境

2.1 获取源码

在任意目录下,执行:

$ git clone https://e.coding.net/Safirst/docker-dev.git

$ git clone git@e.coding.net:Safirst/docker-dev.git

2.2 修改 .env 文件

进入 docker-dev 源码所在目录:

$ vim .env
HOST_IP=192.168.0.32     # 修改为本机IP地址
PROJECT_ROOT=~/qycloud   # 默认为~/qycloud,可根据自己习惯修改为应用源码的存放目录
# 支持的版本列表:0.1
VERSION=0.1              # 镜像的版本,根据需要从支持的版本列表选择一个

注意:若某个镜像需要特别的版本,请直接修改 docker-compose.yml 文件中相应镜像的版本号

2.3 初始化工程目录

$ source .env

2.4 配置 saas

进入 saas 工程目录,创建 development 环境:

cd ${PROJECT_ROOT}/saas/config
cp -r base development

配置 Mysql, MongoDB

vim database.php

# 因所有的服务容器都在同一个网络下,故可通过 hostname 进入网络互通
# 若在docker-compose.yml中未明确指定,默认以容器的服务名为其 hostname
# 由于 default 服务 使用的是 mysql 数据库,故需将其 host 的值改为 mysql
'default' => [
               'host' => 'localhost',
             ]
修改为
'default' => [
               'host' => 'mysql',
             ]

# 同理 mongodb 中的 host 应改为
'mongodb' => [
               'host'     => 'mongo',
             ]

配置 Redis

vim redis.php
# default 的值改为 redis, 原理同上
'default' => 'redis:6379'
# 删除 servers 下的 'organization'属性
# 删除 servers 下的 'auth'属性

配置队列

vim queue.php
# host 的值改为 beanstalkd, 原理同上
'host' => 'beanstalkd'

配置 app.php

vim app.php
# 打开调试(可选)
'is_debug' => true,

# 下面的域名配置的值 与 docker-compose.yml 文件中的 php 服务下的 extra_hosts 中定义的域名必须保持一致。
# 可根据个人习惯决定修改 app.php 还是 docker-compose.yml 文件,只要保持这两个文件中定义的域名一致即可。
# 此文档采用修改docker-compose.yml的方式。

2.5 配置 org

进入 org 工程目录,修改其中的 redis, mongo, queue等参数中的用户名、密码、host与 saas 中相关的配置一致。

2.6 配置 docker-dev/nginx/sites-enabled/aysaas.conf

进入 docker-dev 源码所在目录,修改 nginx/sites-enabled 目录下的配置文件中域名相关的内容,与 app.php 中定义的域名保持一致即可。

2.7 配置 docker-compose.yml

进入 docker-dev 目录,修改 docker-compose.yml:

vim docker-compose.yml

nginx:
  # 修改 nginx 服务下的 ports 为 app.php 中定义的域名端口,将其与容器内 nginx 服务的 80 端口映射起来
  ports:
    - "7777:80"

php:
  # 修改 php 服务下的 extra_hosts 为 app.php 中定义的域名, 两者必须保持一致
  # 注意: ${HOST_IP}无需修改为特定的IP,其将根据 .env 文件中定义的 HOST_IP 自动展开
  extra_hosts:
    - master.aysaas.com:${HOST_IP}
    - www.master.aysaas.com:${HOST_IP}
    - static.master.aysaas.com:${HOST_IP}
    - fileio.master.aysaas.com:${HOST_IP}
    - update.master.aysaas.com:${HOST_IP}
  # 修改数据库密码为 database.php 中设置的密码
  environment:
    - MYSQL_ROOT_PASSWORD=123456

mysql:
  # 修改数据库密码为 database.php 中 default 配置中的 password, dbname
  environment:
    - MYSQL_ROOT_PASSWORD=123456
    - MYSQL_DATABASE=master

mongo:
  # 修改Mongo数据库密码为 database.php 中 mongodb 设置的 password, dbname
  environment:
    - MONGODB_ADMIN_USER=root
    - MONGODB_ADMIN_PASS=root
    - MONGODB_APPLICATION_DATABASE=qycloud
    - MONGODB_APPLICATION_USER=root
    - MONGODB_APPLICATION_PASS=root

配置完成后,可通过下面的命令查看展开的 docker-compose.yml 文件各项参数是否正确:

sudo docker-compose config

2.8 配置本机上的 /etc/hosts

# 在 /etc/hosts 文件末尾添加:
127.0.0.1 master.aysaas.com
127.0.0.1 www.master.aysaas.com
127.0.0.1 static.master.aysaas.com
127.0.0.1 fileio.master.aysaas.com
127.0.0.1 update.master.aysaas.com

2.9 启动开发环境

进入 docker-dev 源码目录(docker-compose 命令需要当前目录下必须有 docker-compose.yml 文件):

# 为减少敲击键盘的频率,设置命令别名(可选)
alias dc='sudo docker-compose'
alias dk='sudo docker'
# 以后即可用别名执行相关命令,如:
dc up
# 等价于
sudo docker-compose up

# 启动
sudo docker-compose up

# 停止
sudo docker-compose down

# 重启指定服务
sudo docker-compose restart php

# 查看服务所有的容器
sudo docker-compose ps

# 查看指定服务容器的日志
sudo docker-compose logs nginx

# 在指定服务的容器内进行交互操作:
sudo docker-compose exec nginx sh

# 在指定服务的容器内进行执行命令:
sudo docker-compose exec nginx sh -c "ls"

# 重新压缩代码
sudo docker-compose exec node compress

# 运行一个一次性命令,例如:
sudo docker-compose run node sh -c "ls"

# 当容器启动失败时,可新起一个容器并进入容器内调试
sudo docker-compose run nginx sh

通过将本地目录映射到容器内,对源码的修改内容可立即反映到容器内部。

若需要对服务的配置进行修改,可将本地的配置文件映射到容器内对应的目录,无需重新制作镜像。

各个服务容器的目录映射关系,请查看docker-compose.yml文件中各个服务的volumes属性, 可根据需要进行修改。

3 编译并上传镜像

当对镜像文件进行了修改后,更新 .env 文件中的版本号,然后检查 build.yml:

sudo docker-compose -f build.yml config

确认无误后,编译、上传:

sudo docker-compose -f build.yml build
sudo docker-compose -f build.yml push

4 Docker Compose 常用命令

启动

sudo docker-compose up

停止

sudo docker-compose down

启动或停止指定的服务

sudo docker-compose up/down nginx

构建镜像

sudo docker-compose build

当对Dockerfile进行了修改,直接启动并不会重新构建镜像,需要在启动时加上 --build 参数, 进行重新构建:

sudo docker-compose up --build

其他命令的使用,请参考https://docs.docker.com/compose/reference/overview/