这两天在将相关的测试服务从同一台测试服务器上迁移到新的 docker 服务器上,记录一下对应的操作过程和要点:
根据 https://github.com/openatx/atx-server 的环境搭建说明,主要步骤有以下几步:
1. 安装 rethinkdb
2. 安装 go
3. 下载源码,编译
4. 先后启动 rethinkdb 和 atx server
转换到 docker 环境,需要两个容器,分别是 rethinkdb 和使用 go 编译启动的 atx server。 因此分解对应步骤如下:
docker pull rethinkdb
docker run --name rethinkdb --net grid -p 8001:8080 -v /opt/rethinkdata:/data -d rethinkdb
服务启动后,访问对应的地址查看管理界面: http://宿主机 ip:8001, 启动成功:
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 的各种参数,最终还是能顺利实现目标。