若您使用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
sudo apt-get remove docker docker-engine docker.io
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
修改配置文件 /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"] }
service docker restart
访问 http://192.168.0.247,点击 注册账号 按钮,根据提示操作。
完成注册后,使用以下命令登录:
sudo docker login -u <你的注册名> 192.168.0.247:80
其他Linux发行版的安装过程,请参考https://docs.docker.com/engine/installation/
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
在任意目录下,执行:
$ git clone https://e.coding.net/Safirst/docker-dev.git
或
$ git clone git@e.coding.net:Safirst/docker-dev.git
进入 docker-dev 源码所在目录:
$ vim .env
HOST_IP=192.168.0.32 # 修改为本机IP地址
PROJECT_ROOT=~/qycloud # 默认为~/qycloud,可根据自己习惯修改为应用源码的存放目录
# 支持的版本列表:0.1
VERSION=0.1 # 镜像的版本,根据需要从支持的版本列表选择一个
注意:若某个镜像需要特别的版本,请直接修改 docker-compose.yml 文件中相应镜像的版本号
$ source .env
进入 saas 工程目录,创建 development 环境:
cd ${PROJECT_ROOT}/saas/config
cp -r base development
vim database.php
# 因所有的服务容器都在同一个网络下,故可通过 hostname 进入网络互通
# 若在docker-compose.yml中未明确指定,默认以容器的服务名为其 hostname
# 由于 default 服务 使用的是 mysql 数据库,故需将其 host 的值改为 mysql
'default' => [
'host' => 'localhost',
]
修改为
'default' => [
'host' => 'mysql',
]
# 同理 mongodb 中的 host 应改为
'mongodb' => [
'host' => 'mongo',
]
vim redis.php
# default 的值改为 redis, 原理同上
'default' => 'redis:6379'
# 删除 servers 下的 'organization'属性
# 删除 servers 下的 'auth'属性
vim queue.php
# host 的值改为 beanstalkd, 原理同上
'host' => 'beanstalkd'
vim app.php
# 打开调试(可选)
'is_debug' => true,
# 下面的域名配置的值 与 docker-compose.yml 文件中的 php 服务下的 extra_hosts 中定义的域名必须保持一致。
# 可根据个人习惯决定修改 app.php 还是 docker-compose.yml 文件,只要保持这两个文件中定义的域名一致即可。
# 此文档采用修改docker-compose.yml的方式。
进入 org 工程目录,修改其中的 redis, mongo, queue等参数中的用户名、密码、host与 saas 中相关的配置一致。
进入 docker-dev 源码所在目录,修改 nginx/sites-enabled 目录下的配置文件中域名相关的内容,与 app.php 中定义的域名保持一致即可。
进入 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
# 在 /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
进入 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属性, 可根据需要进行修改。
当对镜像文件进行了修改后,更新 .env 文件中的版本号,然后检查 build.yml:
sudo docker-compose -f build.yml config
确认无误后,编译、上传:
sudo docker-compose -f build.yml build
sudo docker-compose -f build.yml push
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/