Docker 测试服务迁移至 docker: atx server

Jerry li · 2018年11月10日 · 最后由 Jerry li 回复于 2018年11月16日 · 1899 次阅读

前言

这两天在将相关的测试服务从同一台测试服务器上迁移到新的 docker 服务器上,记录一下对应的操作过程和要点:

atx server

根据 https://github.com/openatx/atx-server 的环境搭建说明,主要步骤有以下几步:

1. 安装 rethinkdb
2. 安装 go 
3. 下载源码,编译
4. 先后启动 rethinkdb  和  atx server

转换到 docker 环境,需要两个容器,分别是 rethinkdb 和使用 go 编译启动的 atx server。 因此分解对应步骤如下:

1. 拉取、启动 rethinkdb 。

docker pull rethinkdb

docker run --name rethinkdb --net grid -p 8001:8080 -v /opt/rethinkdata:/data -d rethinkdb

服务启动后,访问对应的地址查看管理界面: http://宿主机 ip:8001, 启动成功:

2.基于 golang 镜像,制作 atx server 镜像。

2.1 新建单独的目录用以存放 dockerfile 和启动脚本:

mkdir atx_server
cd atx_server

2.2 新建启动脚本 run.sh 如下:

#!/bin/bash
cd /go/src/github.com/openatx/atx-server/
./atx-server --rdbaddr rethinkdb:28015 --port 8000
tail -f README.md

其中最后一句 tail -f 命令很重要,否则启动完会自动退出。

2.3 制作 Dockerfile 如下:

FROM golang
LABEL author="jerry"

WORKDIR /go/src
RUN go get -v github.com/openatx/atx-server
RUN pwd
RUN echo $GOPATH
WORKDIR /go/src/github.com/openatx/atx-server 
RUN pwd && ls
RUN go build
RUN pwd && ls
COPY run.sh /go/src/github.com/openatx/atx-server/run.sh
RUN echo "copy file" && ls
RUN chmod +x /go/src/github.com/openatx/atx-server/run.sh
RUN echo "chmod" && ls
RUN cat run.sh
CMD ["./atx-server --rdbaddr rethinkdb:28015 -addr :8000"]
ENTRYPOINT ["/go/src/github.com/openatx/atx-server/run.sh"]

中间加了很多 pwd、 ls 等命令来调试,确保步骤执行成功。

2.4 生成镜像:

docker build -t jerry/atxserver:v1 .

2.5 启动 atxserver 容器:

docker run --name atxserver --net grid --link rethinkdb:rethinkdb -p 8002:8000 -d bec83eb37554

服务启动后,访问对应的地址查看管理界面: http://宿主机 ip:8002, 启动成功:

整个迁移过程结束!

后记:

第一次根据需求制作 docker 镜像,踩了一些坑后发现,只要熟悉了对应的命令格式和 docker 的各种参数,最终还是能顺利实现目标。

共收到 12 条回复 时间 点赞

感觉和 STF 一样的

repo 里面已经有 dockerfile 了。。。
另外 docker 并没有试验成功,因为 docker 启动后会造成手机连接 atx-server 时候是 docker 网卡的 ip,所以 docker 这块并未推出完整的介绍

AppetizerIO 回复

之前没留意已更新 docker file,不过自己按安装步骤编写也不麻烦。
因为昨晚是远程回公司电脑安装的,所以还没试真机连接的情况,周一上班再试试

AppetizerIO 回复

--net=host,这样 docker 虚拟机和宿主机可以共用一个 ip 的啊,缺点是会把 ip 暴露给宿主机会有安全风险

黑山老妖 回复

这个只有 linux 可以用,而且端口就绑死了

AppetizerIO 回复

刚刚试了下,设备确实没办法注册到 docker 里的 server 。

暂时还是继续使用就的服务,期待大神解决这个问题 😀

AppetizerIO 回复

貌似我使用最新的 uiautomator2 在手机上安装 , 在 docker 里面可以跑通:

docker 好的 atxserver 应该能显示设备 但是不一定能操作它 你试试

AppetizerIO 回复

可以操作, 我的用例也已经跑成功了

可以的 --net=host 就行了

Jerry li 回复

rethinkdb 就不用-p 了吧

Silent Blue 回复

没有用 net=host , 已经可以跑通了

需要 登录 後方可回應,如果你還沒有帳號按這裡 注册