docker随笔:禅道 docker镜像的制作

Posted Stoneshen1211

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker随笔:禅道 docker镜像的制作相关的知识,希望对你有一定的参考价值。


1 说明

1.1 禅道官方有docker制作镜像说明

使用禅道Docker安装包安装

1.2 禅道官方有docker运行禅道镜像说明

Docker方式部署禅道

1.3 docker安装源码下载

zentaopms12.4.4

1.4 参考文章

下面的DOcerfile、docker-entrypoint.sh、docker-compose等文件来自LateLee大神的相关资源
https://hub.docker.com/r/latelee/zentao/
https://github.com/latelee/docker-compose/tree/master/zentao

2 制作

2.1 基础镜像确定

在创建禅道镜像时候,需要确定基础镜像,一般都是指定DockerHub上的ubuntu:16.04来作为基础镜像,但是也可以根据自己的需求进行选择。

2.2 Dockerfile 制定

文件内容如下:

FROM ubuntu:16.04
MAINTAINER Stoneshen
ARG ZENTAO_URL=https://dl.cnezsoft.com/zentao/12.4.4/ZenTaoPMS.12.4.4.zbox_old.64.tar.gz
RUN apt-get update && apt-get install -y wget php-ldap \\ 
--no-install-recommends && rm -r /var/lib/apt/lists/* 
RUN wget ${ZENTAO_URL} -O zbox.tar.gz && mv zbox.tar.gz /tmp 
RUN apt-get remove -y wget && rm -rf /var/lib/apt/lists/* 
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh 
RUN chmod +x /usr/local/bin/docker-entrypoint.sh 
EXPOSE 80 3306 
ENTRYPOINT ["docker-entrypoint.sh"]

说明:
FROM :基础镜像
MAINTAINER:维护者信息
ENTRYPOINT:镜像的默认入口

2.3 docker-entrypoint.sh 制定

在上面的Dockerfile中有指定镜像的默认入口是docker-entrypoint.sh这个脚本,因此需要编写脚本信息,脚本信息如下:

#!/bin/bash
set -e

mysql_CONFIG="/opt/zbox/etc/mysql/my.cnf"
APACHE_CONFIG="/opt/zbox/etc/apache/httpd.conf"

if [ "${1:0:1}" == "-" ]; then
  zbox --help
elif [ "$#" == "0" ]; then
  if [ ! -d "/opt/zbox" ]; then
    tar -zxf /tmp/zbox.tar.gz -C /opt/
    if [[ "${BIND_ADDRESS}" == [fF][aA][lL][sS][eE] ]] && [ -f "${MYSQL_CONFIG}" ]; then
      sed -Ei 's/^bind-address/#&/' ${MYSQL_CONFIG}
    fi
  fi
  export PATH=/opt/zbox/:$PATH
  export PATH=/opt/zbox/bin:$PATH
  cat /opt/zbox/README && zbox start
  if [ -n "${USER}" -a -n "${PASSWD}" ]; then
    /opt/zbox/bin/htpasswd -b /opt/zbox/auth/users ${USER} ${PASSWD}
  fi

  if [ -n "${SMTP_HOST}" ];then
    echo "${SMTP_HOST}" >> /etc/hosts
  fi
  tail -f /dev/null
else
  exec "$@"
fi

2.4 制作

将上面两个文件放到同一个目录中,并在这个目录下,运行命令:
docker build –t zentao_v2 .
制作完成之后,使用命令docker images会看到我们制作成功的docker镜像:

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
zentao_v2           latest              0f03c44eba57        37 seconds ago      224MB

注意:此镜像只是为了熟手docker镜像的制作,可能一些参数之类的没有设置进去,所以,推荐使用禅道官方的docker hub镜像。

3 运行

3.1 直接使用docker run

直接使用如下命令:

docker run --name zentao_stone -v /home/data:/opt -p 8080:80 -itd zentao_v2

/home/data 是主机的目录,用于映射容器的/opt目录,也可以不映射

默认的用户名和密码是 admin 123456
也可以使用下面的指令指定用户名和密码:

docker run --name zentao_stone1 -e USER="admin" -e PASSWD="987654321" -v /home/data:/opt -p 8080:80 -itd zentao_v2

随后在浏览器中输入IP:8080即可进入禅道界面。

注意:上面命令只是简单命令,用于测试,详细指令可以参考上面1.2中禅道官方的指令说明。

注意:如果docker运行在linux环境下,直接使用linux的ip即可;如果docker运行在win环境下,则需要获取容器的真正的IP,在容器中使用命令docker-machine ip default即可获取,或者在上面的运行命令中指定IP映射

3.2 使用docker-compose

使用docker-compose需要制作docker-compose.yml文件,文件内容如下:

version: "2"
services: 
  zentao:
    image: zentao_v2
    container_name: zentao_stone
    ports:
      - "8080:80"
      #- "3307:3306"
    environment:
    # specifies you own account and password.
      USER: "admin"
      PASSWD: "12345678"
      BIND_ADDRESS: "false"
      SMTP_HOST: "163.177.90.125 smtp.exmail.qq.com"
    volumes:
    # specifies the path replace "./data".
      - /home/work/docker/zentao_make/data:/opt
    restart: always

随后使用命令docker-compose up -d运行即可。

登录界面如下:

4 上传docker hub

上传镜像需要先对镜像打标签,然后在上传到docker hub。

4.1 镜像命名

格式如下:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

使用命令如下:

docker tag zentao_v2 stoneshen/zentao:v12.4.4

4.2 推送到docker hub

docker push stoneshen/zentao:v12.4.4

4.3 查看

以上是关于docker随笔:禅道 docker镜像的制作的主要内容,如果未能解决你的问题,请参考以下文章

docker随笔:交叉编译工具链 docker镜像的制作

docker随笔:交叉编译工具链 docker镜像的制作

十八docker部署禅道

我的docker随笔28:基于容器的升级方案实验

docker学习12-docker快速搭建禅道环境

我的docker随笔36:定制jenkins镜像