前言

这两天在将相关的测试服务从同一台测试服务器上迁移到新的 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 的各种参数,最终还是能顺利实现目标。


↙↙↙阅读原文可查看相关链接,并与作者交流