Docker API测试环境打包镜像(mac)
TODO:使用docker技术,打包API自动化测试环境镜像并上传至私有仓库
ENV:jenkins,python3.7
安装docker
mac相比windows安装更简单一些,只需一行命令就搞定啦。下载会有些慢,耐心等待。
brew cask install docker
如果没有brew,请参考:Mac 下安装 Homebrew
下载完成后,启动栏会多一个docker的图标,点击启动。
此时命令行输入docker info
就可以看到docker的基本信息。
配置私有仓库
因为公司有单独的私有仓库,所以还需要进行配置才可以正常访问。
进入这个页面:Preferences - Daemon - Basic
,开启 Experimental features
,点击 “+”,添加私有仓库地址即可。docker会自动重启,启动成功后,即可正常访问。
制作镜像
有两种方法:
- 通过dockerfile进行自动build;
- 先拉取jenkins镜像,再手动安装python。
一般都是通过dockerfile来进行构建,由于环境依赖不多,先用比较low的办法吧。(其实是因为不会写dockerfile )
1.拉取jenkins镜像:docker pull jenkins
,默认是从官方仓库拉取最新镜像。拉取成功后可以通过docker images
查看镜像。
2.运行jenkins容器
docker run --name myjenkins -p 8080:8080 -v /var/jenkins_home jenkins
–name:自定义命名
-p:端口映射,格式为:主机(宿主)端口:容器端口
-v:挂载目录
jenkins:基础镜像
运行后在web查看,浏览器输入127.0.0.1:8080
即可进入jenkins页面,如果需要输入**,则根据提示进入容器对应路径查看**填入即可。
如何进入正在运行的容器?
打开一个新的iterm窗口,输入如下命令:
普通用户(仅访问):docker exec -it <container_id> bash
root用户(管理员):docker exec -it -u root <container_id> bash
进入容器命令行交互模式,进入对应路径查看**
[email protected]:/$ cd /var/jenkins_home/secrets/
[email protected]:~/secrets$ cat initialAdminPassword
拿到**,创建完管理员账号,正常访问~
下载python3.7
还需要安装python,首先查看所需要的版本:点击这里进入版本列表
进入jenkins容器命令交互模式,下载:
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
等待下载完成,进行解压:
tar xvf Python-3.7.0.tar.xz
进入Python-3.7.0目录,配置安装路径:
./configure --prefix=/usr/local/python3
执行编译安装:
make && make install
没能正常编译成功,心塞~~接下来写写遇到的问题。
遇到的问题
安装过程中遇到如下问题,报错日志:
configure: error: in `/usr/local/python3/Python-3.7.0': configure: error: no acceptable C compiler found in $PATH See `config.log' for more details
是因为执行./configure --prefix=/usr/local/python3
时编译缺少gcc环境,解决方法如下:
- 配置debian源
- 安装gcc,应该就能正常编译成功了吧。我在运维小哥哥的建议下,没安装gcc,直接
apt-get install python3
,安装成功。 - 安装pip
apt-get install python3-pip
更新镜像
语法docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a:提交人
-m:备注信息
-p:commit时,将容器暂停
实例
mbp:~ lanzy$ docker commit -a "lanzy" -m "api test env" 7b0dc4b05174 apitestenv:v1
sha256:4e72402053e88362efc783a67c5b2aac32c7f3ace95e0fb968ff7826f71c337b
此时再次查看现有镜像,出现刚才提交的镜像。
提交至私有仓库
docker push $path
$path:为私有仓库链接地址。
至此,新的镜像就做出来了~~
dockerfile的写法后续还会继续学习ing~~