3.2 直接Docker容器构建执行
容器执行
这一章中,我们来测试一下上一章制作的镜像是否可以正常使用。
获取etcd在docker中的地址
还记得吗?在2.3 服务编写时我们说过,go-micro
默认查找的地址是127.0.0.1
,但是etcd
、account
、apigw
都是在不同容器中运行的,所以需要我们启动时手动指定etcd
容器所在的地址。
我们执行
> docker inspect etcd1 --format "{{.NetworkSettings.IPAddress}}"
172.17.0.2
这样我们就能拿到etcd在docker容器中的地址。
docker容器运行时不指定网络命名空间,则默认使用default,default之间的容器在同一个网段中,所以可以互相通讯。
account
我们接着启动account
服务
docker run -e PARAMS="--registry etcd --registry_address 172.17.0.2:2379" --name="account" -d registry.cn-shenzhen.aliyuncs.com/go_micro/account:v1.0
通过 -e 传递环境变量到PARAMS中,这跟我们上一章编写的Dockerfile文件有关
apigw
我们继续启动apigw
服务
docker run -e PARAMS="-p 8091 --registry etcd --registry_address 172.17.0.2:2379" -p 8091:8091 --name="apigw" -d registry.cn-shenzhen.aliyuncs.com/go_micro/apigw:v1.0
测试
我们最后发送请求进行测试
> curl -X POST -d "username=guaosi&password=guaosi" http://127.0.0.1:8091/account/register
{"code":0,"message":""}
代码仓库
最终的代码和部署文件,已经传至github,欢迎star。