1. 程式人生 > >Docker CI: 基於 Dockerfile 構建 HttpTestbed 新映象

Docker CI: 基於 Dockerfile 構建 HttpTestbed 新映象

一、概述

基於 Docker 整合 CI 環境。涉及技術:Linux(Ubuntu 14.04), Docker, Jenkins, Git/Gitlab, Web/Httpbin, Python/Pytest, UI/Selenium, Robotframework, Grid Server, Appium 等。

架構圖如下:

在這裡插入圖片描述

二、Docker 平臺(Ubuntu 14.04):基於 Dockerfile 構建 HttpTestbed 新映象

# cd /vm/docker/httptestbed
# sudo docker build -t httptest .

清單

dockerfile

FROM ubuntu:14.04

MAINTAINER Allan <
[email protected]
> ENV DEBIAN_FRONTEND noninteractive ENV USER root # VNC 配置 RUN apt-get update && \ apt-get install python-pip -y && \ apt-get install -y --no-install-recommends ubuntu-desktop && \ apt-get install -y gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal && \ apt-get install -y tightvncserver && \ mkdir /root/.vnc ADD xstartup /root/.vnc/xstartup ADD passwd /root/.vnc/passwd RUN chmod 600 /root/.vnc/passwd # SSH 配置 RUN apt-get update && apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:screencast' | chpasswd RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed '
[email protected]
\s*required\s*[email protected] optional [email protected]' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile # 編輯器 RUN apt-get update && \ apt-get install vim -y && \ apt-get install gedit -y #安裝基本字型 RUN apt-get -qqy --no-install-recommends install \ fonts-ipafont-gothic \ xfonts-100dpi \ xfonts-75dpi \ xfonts-cyrillic \ xfonts-scalable #安裝文泉驛微米黑字型 RUN apt-get -qqy install ttf-wqy-microhei \ && ln -snf /etc/fonts/conf.d/65-wqy-microhei.conf /etc/fonts/conf.d/69-language-selector-zh-cn.conf # 時區:中國上海 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 配置中文 RUN apt-get install -y locales RUN locale-gen zh_CN.UTF-8 &&\ DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales RUN locale-gen zh_CN.UTF-8 ENV LANG zh_CN.UTF-8 ENV LANGUAGE zh_CN:zh ENV LC_ALL zh_CN.UTF-8 RUN sed -i '$a\set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936' /etc/vim/vimrc RUN sed -i '$a\set encoding=utf-8' /etc/vim/vimrc # 設定 Java(Jenkins) RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections RUN add-apt-repository ppa:webupd8team/java RUN apt-get update RUN apt-get install openjdk-8-jdk -y RUN apt-get install oracle-java8-set-default -y # 安裝 Git RUN apt-get update RUN apt-get install git -y # Http Test 庫 RUN mkdir /root/.pip ADD pip.conf /root/.pip/pip.conf RUN pip install requests RUN pip install pytest RUN pip install xlrd RUN pip install xlwt RUN pip install natsort # 工程目錄 RUN mkdir /var/project # 啟動 SSH 和 vnc RUN apt-get install supervisor -y ADD vnc.sh /root/.vnc/vnc.sh RUN chmod a+x /root/.vnc/vnc.sh ADD supervisord.conf /etc/supervisord.conf ADD start.sh /opt RUN chmod a+x /opt/start.sh ENTRYPOINT ["/opt/start.sh"] EXPOSE 22 EXPOSE 5901

passwd

配置密碼

pip.conf

[global]
index-url=http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com

xstartup

#!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &

gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
#!/bin/bash
while [ 1 ]
do
  ps -fe|grep Xvnc |grep -v grep
  if [ $? -ne 0 ]
  then
  echo "start vnc ..."
  rm -f /tmp/.X1-lock
  rm -f /tmp/.X11-unix/X1
  /usr/bin/vncserver :1 -geometry 1280x800 -depth 24
  else
  echo "vnc is running"
  fi
  sleep 30
 done

supervisord.conf

[supervisord]
nodaemon=true

[program:vnc]
command=/root/.vnc/vnc.sh
autorestart=true
priority=200
#!/bin/bash
/usr/sbin/sshd -D &
/usr/bin/supervisord -c /etc/supervisord.conf

三、檢視並執行 httptestbed 映象

--name: 容器名
--restart : 自動啟動
-d: daemon 守護程序
-p: publlish 埠,5901是 httptest VNC 埠,1022 是 SSH 埠

# sudo docker images
# sudo docker run --name httptest --restart always -d -p 5901:5901 -p 1022:22 httptestbed
# sudo docker ps

四、VNC Viewer 開啟容器 httptest

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

相關推薦

Docker CI: 基於 Dockerfile 構建 HttpTestbed 映象

一、概述 基於 Docker 整合 CI 環境。涉及技術:Linux(Ubuntu 14.04), Docker, Jenkins, Git/Gitlab, Web/Httpbin, Python/Pytest, UI/Selenium, Robotframe

docker基於Dockerfile構建mysqld服務鏡像

mysqld服務鏡像一 創建構建目錄結構 # mkdir -pv docker/mysql# cd docker/mysql/二 寫Dockerfile 文件# vim Dockerfile #此處 sshd:latest 為上篇文章中創建的鏡像#此Dockerfile 「dookerpool」的

docker基於Dockerfile構建monogdb服務鏡像

monogdb服務鏡像① 查看內容,包括寫好的Dockerfile和若幹腳本等。從GitHub Dockerpool社區賬戶下載Mongodb鏡像項目:git clone https://github.com/DockerPool/Mongodb.git 並修改文件[root@docker1 Mongodb]

基於Dockerfile構建docker映象實踐_Kubernetes中文社群

1、Dockerfile檔案和核心指令 在Kubernetes中執行容器的前提是已存在構建好的映象檔案,而通過Dockerfile檔案構建映象是最好方式。Dockerfile是一個文字檔案,在此檔案中的可以設定各種指令,以通過docker build命令自動構建出需要的映象。Dockerfil

Kubernetes-基於Dockerfile構建docker映象最佳實踐

1、Dockerfile檔案和核心指令在Kubernetes中執行容器的前提是已存在構建好的映象檔案,而通過Dockerfile檔案構建映象是最好方式。Dockerfile是一個文字檔案,在此檔案中的可以設定各種指令,以通過docker build命令自動構建出需要的映象。D

基於Dockerfile構建自己帶密碼帶redis映象

新建目錄 mkdir -p /var/docker/redis cd /var/docker/redis 新建Dockerfile FROM centos:7.5.1804 MAINTAINER [email protected] RUN ln -sf /usr/share/

docker築基篇-04-使用Dockerfile構建自己的映象

上一篇文章介紹了使用docker commit命令來構建自己的映象。 本篇文章將使用Dockerfile實現上篇文章中的需求。 1 構建自己的映象 此處我們打算,給一個centos:6.8容器安裝nginx伺服器。 並將其狀態保留,以便不用每次

docker 基於Dockerfile構建redis

建立Dockerfile 檔案 新建目錄 mkdir /var/docker/redis -p cd /var/docker/redis 新建 Dockerfile FROM cento

Docker 實戰—使用 Dockerfile 構建映象

GitHub Page:http://blog.cloudli.top/posts/Docker實戰-使用-Dockerfile-構建映象/ Dockerfile 指令詳解請訪問:https://www.cnblogs.com/cloudfloating/p/11737447.html 使用 Alpine L

Docker學習(六)Dockerfile構建自定義映象

Docker學習(六)Dockerfile構建自定義映象 前言 通過前面一篇文章可以知道怎麼去使用一個映象搭建服務,但是,如何構造自己的一個映象呢,docker提供了dockerfile可以讓我們自己構造一個屬於自己的映象 什麼是dockerfile 是一個包含用於組合映象的命令的文字文件 Docker

基於dockerfile構建鏡像

docker dockerfile [root@os-machine static_web]# docker build --help Usage: docker build [OPTIONS] PATH | URL | - Build an image from a Dockerfile

Docker-CE之Dockerfile 生成自定義映象

我將使用swoft框架根目錄的Dockerfile檔案做講解,看完指令的作用後,你可以自己編寫一個。 FROM 指定基礎映象 (必須是第一個指令) 你需要一個基礎的映象為基,如果你實在想不出用啥映象,就用 FROM scratch,表示空映象。 下面的會到docker倉庫裡去找,然後做為

基於dockerfile構建javaweb環境

前言 接上篇阿里雲ECS - 使用Docker搭建Java Web執行環境 上篇文章雖然成功搭建了java web執行環境,但操作起來比較繁瑣,只能算一次docker的初體驗,本篇文章會使用dockerfile模板化的方式快速構建javaweb環境 操作環

Docker + Ubuntu 安裝 nodejs,redis 生成映象

Docker + Ubuntu 安裝 nodejs Docker 使用 下載 ubuntu 映象 docker pull ubuntu:14:04 執行容器 docker run -it -d —name containerName ubun

通過dockerfile構建jar包映象

1.建立dockerfile檔案,如下:    FROM     java:latest    ADD     dataset-1.0.0-SNAPSHOT.jar   

映象即程式碼:基於Packer構建阿里雲映象

開發十年,就只剩下這套架構體系了! >>>   

Docker基於現有映象構建映象

(作者:陳玓玏) 由現有映象構建新映象都是通過Dockerfile文件來實現的。 1、新建Dockerfile文件 在/home資料夾下新建一個資料夾,專門用來測試的,/docker/test資料夾,在資料夾中新建一個Dockerfile文件,文件中寫

Docker--使用Dockerfile構建映象--RHEL7.2

Dockfile是一種被Docker程式解釋的指令碼,Dockerfile由一條一條的指令組成,每條指令對應Linux下面的一條命令。Docker程式將這些Dockerfile指令翻譯真正的Linux命令。Dockerfile有自己書寫格式和支援的命令,Docker程式解

docker 簡單使用以及利用Dockerfile構建屬於自己的映象

安裝docker  vim /etc/apt/sources.list  加入以下程式碼: deb http://http.debian.net/debian wheezy-backports main 然後重新整理源: apt-get updat

dockerfile構建基於centos系統的jar包的映象

實際示例: [[email protected] home-dataline]# ls dataline.jar Dockerfile jdk-8u181-linux-x64.tar.gz    [[email protected] home-dataline]