内容简介:Docker Hub提供了镜像构建服务,特别是和代码仓库关联起来的时候可以自动构建最新的镜像,这个功能可以保证你的镜像时刻是最新的。但是有时候构件本身可能是成功的,比如你成功生成了相关的jar,并放到了合适的运行容器中,但是可能由于第三方依赖或其他原因导致你的镜像其实并不能正常工作。人工验证可以发现问题,但是这里使用Docker Hub提供的测试服务更加快捷。
Docker Hub提供了镜像构建服务,特别是和代码仓库关联起来的时候可以自动构建最新的镜像,这个功能可以保证你的镜像时刻是最新的。
但是有时候构件本身可能是成功的,比如你成功生成了相关的jar,并放到了合适的运行容器中,但是可能由于第三方依赖或其他原因导致你的镜像其实并不能正常工作。
人工验证可以发现问题,但是这里使用Docker Hub提供的测试服务更加快捷。
我们以dubbo-admin为例,这是一个非常标准的Spring Boot项目,构建以后生成jar包可以直接运行。而我们的测试目标就是构建出的镜像可以正常对外提供服务,这里我们检测swagger文档地址是否返回200。不同的项目可以使用不同的检测标准。
首先添加一个检测脚本test.sh
LOOP_SIZE=60 i=0 while [[ $i -lt LOOP_SIZE ]]; do status_code=$(curl --write-out %{http_code} --silent --output /dev/null http://admin:8080/swagger-resources) if [[ "$status_code" -eq 200 ]] ; then echo "Tests passed!" exit 0 else curl -v http://admin:8080/swagger-resources echo "status is incorrect, waiting for next turn" fi sleep 5 i=$i+1 done echo "Tests failed!" exit 1
这里循环检测相关访问是否成功,重试60次,每次间隔5秒。
然后提供了测试镜像
FROM ubuntu:trusty RUN apt-get update && apt-get install -yq curl && apt-get clean WORKDIR /app ADD test.sh /app/test.sh CMD ["bash", "test.sh"]
最后新建一个docker-compose.test.yml,这个名字是Docker Hub检测的依据,不要用其他名字
zookeeper: image: zookeeper admin: build: . dockerfile: Dockerfile links: - zookeeper environment: - admin.registry.address=zookeeper://zookeeper:2181 - admin.config-center=zookeeper://zookeeper:2181 - admin.metadata-report.address=zookeeper://zookeeper:2181 sut: build: . dockerfile: Dockerfile.test links: - admin
这其中可以增加相关依赖,比如zookeeper。
最后在Docker Hub的执行结果如下:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 不要轻易使用 Alpine 镜像来构建 Docker 镜像,有坑!
- 根据Dockerfile构建镜像
- 构建go应用镜像
- 使用Dockerfile构建镜像
- Docker 构建镜像
- 利用Makisu构建容器镜像
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。