docker_skynet环境搭建
制作skynet环境镜像
编写 docker-compose.yml 文件
1
root@ubuntu:~# docker run --name skynet -it my_base_ubuntu:16.04 bash
安装所需要的包
git
1
2sudo apt-get install git
sudo apt-get install git-coreautoconf
1
sudo apt-get install autoconf
readline
1
sudo apt-get install libreadline6-dev
gcc
1
sudo apt-get install build-essential
安装skynet
1
2
3git clone https://github.com/cloudwu/skynet.git skynet
cd skynet
make 'Linux'测试
启动 skynet 服务
1
2
3
4
5
6root@b5ee6be603db:/skyet_app# ./skynet examples/config
[:01000001] LAUNCH logger
[:01000002] LAUNCH snlua bootstrap
[:01000003] LAUNCH snlua launcher
[:01000004] LAUNCH snlua cmaster
[:01000004] master listen socket 0.0.0.0:2013客户端 测试
1
root@b5ee6be603db:/skyet_app# ./3rd/lua/lua examples/client.lua
ctrl + c 退出 skynet 服务,清理相关垃圾
1
2
3apt-get clean
apt-get auto-clean
rm -fr skynet
提交保存镜像
退出容器,停止服务,提交保存为镜像
1
2docker stop skynet
docker commit skynet my_skynet
启动新镜像
- 挂载 skynet 目录到容器中
1 | make -p /root/a_skynet/skynet_offical # skynet 的仓库 clone 到这个文件夹 |
docker-compose.yml 方式启动
1
2
3
4
5
6
7
8
9
10
11version: '2'
services:
skynet_env:
image: my_skynet:16.04
container_name: skynet
tty: true
ports:
- '8010:8010'
entrypoint: /bin/bash
volumes:
- /root/a_skynet/skynet_offical:/skyet_app
进入容器编译skynet
1
2cd /skynet_app
make linux
连接 redis
- 启动 redis
1 | mkdir -p /opt/redis/data |
- 启动 skynet,连接 redis 容器
1 | docker run \ |
测试是否连接成功
使用 skynet 中测试用例 testredis2.lua ,在启动脚本中增加这个服务
1
skynet.newservice("testredis2")
修改 testredis2.lua 中的 redis 连接配置
1
2
3
4
5
6db = redis.connect {
host = "redis_db", -- 这里是 link redis 的 alias
port = 6379, -- redis 容器的 端口
db = 0,
-- auth = "foobared"
}启动skynet,testredis2.lua 测试脚本会插入数据到 redis 数据库中,用 redis 客户端练上去看是否插入成功。
这里同样使用 redis 镜像启动 redis 客户端服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15wilker@ubuntu:~$ docker run -it \
--name redis_client \
> --link redis_server:redis \
> --rm=true \
> redis \
> redis-cli -h redis -p 6379
redis:6379> HGETALL test1
1) "key1"
2) "value1"
3) "key2"
4) "value2"
5) "key3"
6) "value3"
...
redis:6379>数据成功插入,ok,done!