docker中安装teslink+mysql

使用docker搭建一个testlink服务器,外连公司的mysql数据库,可以方便地对数据做迁移

准备工作

  1. 安装docker
  2. 确定一个可用的数据库

容器初始化并定制

pull原生镜像

pull原生centos镜像,pull成功的话如下所示,若在pull过程中下载较慢或者无法连接,请尝试更换docker源后再pull

1
2
3
4
5
6
7
docker pull centos[:TAG]  #不指定tag时默认tag为latest
$ docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8ba884070f61: Pull complete 
Digest: sha256:8d487d68857f5bc9595793279b33d082b03713341ddec91054382641d14db861
Status: Downloaded newer image for centos:latest

使用以下命令来查看本地的docker image:

1
docker images

运行centos镜像

执行以下命令

1
docker run --privileged  -dit -p 80:80 -e "container=docker"  --name testlink_server centos   /usr/sbin/init

参数说明

–privileged
-dit 后台运行
-p 端口映射
-e 设置环境变量
–name 设置运行容器名

再执行docker exec进入容器终端操作

1
docker exec -it testlink_server  /bin/bash

安装apache

使用centos自带的包管理工具yum来安装apache

1
2
yum -y update   #更新软件
yum install httpd -y #安装apache

等待以上命令安装成功后启动apache并将apach加入到开机自启动

1
2
systemctl start httpd    #启动apache服务
systemctl enable  httpd #设置apache开机自启动

若在使用systemctl时提示Failed to get D-Bus connection: Operation not permitted,请检查容器是否使用–privileged启动,详细解决方法可参考Centos7 Docker容器中报错 Failed to get D-Bus connection: Operation not permitted
此时可以打开本地浏览器http://localhost/ 若提示展示如下页面,则表明apache服务启动成功
图片

安装php5.6

添加centOS 7.0源

1
2
yum install epel-release
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

yum源配置好后安装PHP5.6

1
yum install --enablerepo=remi --enablerepo=remi-php56 php php-opcache php-devel php-mbstring php-mcrypt php-mysqlnd php-phpunit-PHPUnit php-pecl-xdebug php-pecl-xhprof

安装完成后建议执行clean来清除一些多余缓存,以减少生成的镜像的大小

1
yum clean all

检查当前php版本

1
2
3
4
5
6
# php -v
PHP 5.6.40 (cli) (built: Mar 15 2019 15:26:44) 
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
    with Xdebug v2.5.5, Copyright (c) 2002-2017, by Derick Rethans

注意:若当前版本小于5.6,则在运行最新版testlink的php代码时会报错

下载testlink包

我们使用最新版testlink 1.9.19,其他版本请到testlink官网下载
方法一.在centos容器中 使用wget直接下载

1
wget https://nchc.dl.sourceforge.net/project/testlink/TestLink%201.9/TestLink%201.9.19/testlink-1.9.19.tar.gz

方法二.在宿主机上下载后复制到容器中

1
2
wget https://nchc.dl.sourceforge.net/project/testlink/TestLink%201.9/TestLink%201.9.19/testlink-1.9.19.tar.gz
docker cp testlink-1.9.19.tar.gz testlink_server:/

ps:推荐使用方法二,这样就无需在容器中安装wget了,使得制作的镜像相对来说比较小

解压testlink包并安装

容器中执行

1
tar -zvxf testlink-1.9.19.tar.gz testlink

拷贝testlink到apache服务的指定目录

1
mv testlink-1.9.19 /var/www/html/testlink

重启apache服务后访问http://localhost/testlink 可进入如下界面则表明apache已安装成功
图片

PHP配置

图片
php配置文件目录为

/etc/php.ini

根据提示修改
A、Maximum Session Idle Time before Timeout 24 minutes and 0 seconds - (Short. Consider to extend.)
解决:php.ini文件修改: session.gc_maxlifetime的值为2400
B、Checking max. execution time (Parameter max_execution_time)
解决:php.ini文件修改:
max_execution_time = 120
C. Checking Postgres Database Failed! Postgres Database cannot be used.
Checking MSSQL Database Failed!
解决:如连接MySQL,不用处理该警告,否则安装即可
D、Checking LDAP library OK
解决:php.ini文件修改如下:
extension=php_ldap.dll
发现没有php_ldap.dll,安装PHP的LDAP扩展,还是没有,发现名字换了,于是把php_ldap.dll换成ldap.dll,不再报错

添加对应目录并增加读写权限

1
2
3
4
5
6
chmod 777 /var/www/html/testlink/gui/templates_c 
mkdir /var/testlink
mkdir /var/testlink/logs/
mkdir /var/testlink/upload_area/
chmod 777 /var/testlink/logs/
chmod 77 /var/testlink/upload_area/

配置数据库

配置数据库有两种方法,适用于不同的场景
方法一.手动生成数据表结构并添加对应的配置文件
适用条件:已有数据库,只需要单独添加teslink的数据库即可,方便数据的迁移
操作步骤:

  1. 在对应数据库中执行:
    CREATE DATABASE testlink CHARACTER SET utf8 COLLATE utf8_general_ci
  2. 使用testlink自带的sql脚本testlink_create_tables.sql生成表
  3. 使用testlink自带的sql脚本testlink_create_default_data生成默认数据
  4. 在testlink目录下新增配置文件config_DB.inc.php,内容如下:
    1
    2
    3
    4
    5
    6
    7
    <?php
    define('DB_TYPE', 'mysql');
    define('DB_USER', 'yourname');
    define('DB_PASS', 'yourpassword');
    define('DB_HOST', 'databasehost:databaseport');
    define('DB_NAME', 'testlink');
    ?>

ps:sql脚本路径 testlink/install/sql/mysql
方法二.根据http://localhost/testlink/install/中的提示逐步完成
适用条件:首次搭建,
操作步骤:根据web提示添加信息即可
图片

配置完成后重启apache服务

至此,我们已经启动了一个可随时运行的容器,并在本机运行,但是很多时候我们需要把服务部署到特定服务器上

部署

部署时我们只需要将本地容器制作成镜像,然后部署到对应的服务器即可

制作docker镜像

1
docker commit -a "example@example.com" -m "基于centos的镜像搭建" 2480719f8213 testlink-server/testlink:v4

镜像推送到指定hub

修改tag为规范的tag:

1
docker tag SOURCE_IMAGE[:TAG] 仓库域名/仓库名/IMAGE[:TAG]

修改tag成功后可以使用docker images查看
push本地镜像到服务器

1
docker push 仓库域名/仓库名/IMAGE[:TAG]

服务器下载镜像并启动

登陆要部署的服务器,下载对应镜像

1
docker pull  仓库域名/仓库名/IMAGE[:TAG]

启动容器

1
docker run --privileged  -dit -p 8009:80 -e "container=docker"  --name testlink_server testlink:v4   /usr/sbin/init

此时testlink服务器已部署完成,需要修改时执行以下命令,进入终端操作

1
docker exec -it testlink_server /bin/bash

以上

参考文章
Centos7 Docker容器中报错 Failed to get D-Bus connection: Operation not permitted
centos7 部署Apache服务器
在CentOS安装PHP5.6
testlink—安装与配置

投食