docker 学习3:docker测试与持续集成

应用场景:

1.使用docker测试一个静态网站

2.使用docker创建并测试一个Web应用

3.将docker用于持续集成

写在最前:本文所有镜像构建不成功或自己无法解决的问题,请配置DaoCloud镜像站

docker search jamtur01镜像


1.使用docker测试一个静态网站

1.1Sample网站初始化Dockerfile

创建目录



Dockerfile内容



1.2 构建Sample网站与Nginx镜像

docker build -t jamtur01/nginx .

如果发现构建过程 到 apt-get update 卡住

RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

RUN apt-get clean

1.3从Sample网站和Nginx镜像构建容器

mkdir website && cd website

wget https://github.com/turnbullpress/dockerbook-code/tree/master/code/5/sample/website/index.html

构建容器

docker run -d -p 80 --name website \

-v $PWD/website:/var/www/html/website \

jamtur01/nginx:latest nginx

-v 允许宿主机的目录挂载到容器 如果设置只读   在 :/var/www/html/website :ro  


浏览器输入 上面端口

1.4修改网站

只需把 -v 下面指定的卷 的index.html 修改,无需重新构建镜像即可更改


2 使用docker构建并测试web 应用程序

2.1构建Sinatra应用程序

Sinatra是一个基于Ruby语言的DSL( 领域专属语言),可以轻松、快速的创建web应用。

不遵循MVC模式,而关注与让开发者创建快速、简单的web应用。

mkdir -p sinatra

cd sinatra

vim Dockerfile

gem install 卡住

RUN gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/ 

设置国内镜像源, 把Ubuntu版本换成18.04  14.04会发生ruby版本问题

docker build -t jamtur01/sinatra .

2.2创建Sinatra容器

cd sinatra

wget --cut-dir=3 -nH -r --reject Dockerfile,index.html --no-parent https://github.com/turnbullpress/dockerbook-code/tree/master/code/5/sinatra/webapp/  (该命令无效需手动下下载)

ls -l webapp

2.3扩展Sinatra 应用程序来使用redis

cd sinatra

wget --cut-dir=3 -nH -r --reject Dockerfile,index.html --no-parent https://github.com/turnbullpress/dockerbook-code/tree/master/code/5/sinatra/webapp_redis

mkdir redis

cd redis

构建dockerfile

docker build -t jamtur01/redis .

docker run -d -p 6379 --name redis jamtur01/redis

检查端口

docker port redis 6379

sudo apt-get -y install redis-tools

测试连接

redis-cli -h 127.0.0.1 -p 端口号( 为上面 docker port redis端口)

2.4将Sinatra应用连接到redis容器

Docker Networking  与Docker Link

1)可以将容器连接到不同宿主机的容器

2)连接的容器可以在无需更新连接的情况下,对停止、启动或重启容器

docker Link 需要更新配置

3)不必关心内部容器的运行顺序

查看容器Ip地址

docker inspect -f '{{ .NetworkSettings.IPAddress }}' redis

连接redis

redis-cli -h 172.17.0.18

Docker Networking

创建网络

docker network create app

在docker网络中创建redis容器

docker run -d --net=app --name db jamtur01/redis

将已有容器连接到网络

docker network connect app db

断开连接

docker network disconnect app db

3. Docker用于持续集成

3.1构建Jenkins和Docker服务器

Jenkins是什么?


        Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。


编写Dockerfile


获取脚本dockerjenkins.sh

wget https://github.com/turnbullpress/dockerbook-code/blob/master/code/5/jenkins/dockerjenkins.sh

chmod 0755 dockerjenkins.sh

构建镜像

docker build -t jamtur01/dockerjenkins .

构建容器

docker run -p 8082:8080 --name jenkins --privileged \

> -d jamtur01/dockerjenkins

--privilege 启动docker特权模式,运行宿主机拥有root权限

浏览器访问 配置的端口


选择自由风格项目

选择高级项目选项-高级-使用自定义用户空间

 /tmp/jenkins=buildenv/${JOB_NAME}/workspace目录是jenkins的工作空间

源代码管理

指定git仓库 https://github.com/turnbullpress/docker-jenkins-sample.git

包含基本Ruby的RSpec测试

添加构建步骤-选择execute shell 使用自定义脚本来启动测试和docker

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容