docker随笔:禅道docker镜像的制作(代码片段)

Stoneshen1211 Stoneshen1211     2023-01-02     510

关键词:


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随笔36:定制jenkins镜像(代码片段)

...必要研究制作自定义的镜像。官方提供了各版本的脚本和Dockerfile,可以直接用这些文件生成镜像,笔者认 查看详情

docker学习12-docker快速搭建禅道环境(代码片段)

...一个测试团队的时候,需快读搭建一套bug管理系统,使用docker搭建禅道就非常方便。拉取镜像先拉取zentao镜像,镜像地址https://hub.docker.com/r/idoop/zentaodockerpull拉取镜像dockerpullidoop/zentao启动容器创建本地目录mkdir-p/data/zbox启动容器d 查看详情

docker随笔1(代码片段)

1.docker常用命令集合:执行docker的时候建议使用root用户进行操作,ubuntu/deepin如果没有设置root的密码,可以执行以下命令sudopasswd设置root密码切换root用户:使用su命令dockerpullname#拉取镜像dockerimages#获取镜像的列表dockerinspectimageid#以... 查看详情

docker容器的使用随笔(代码片段)

2019/10/24,docker19.03.4摘要:docker容器常用命令整理gitbooks文档拉取nginx镜像:dockerpullnginx列出镜像:dockerimagels删除镜像:dockerimagerm501501是要删除镜像的IMAGEID前三位列出运行中的容器:dockerps或dockercontainerls列出所有容器,包括停止... 查看详情

容器技术之dockerfile

  在前边的随笔中我们聊到了docker的基本命令,镜像,网络,存储卷以及基于现有容器制做docker镜像,相关随笔可参考https://www.cnblogs.com/qiuhom-1874/category/1766327.html;今天我们来聊一聊docker的另一个制作镜像的方式dockerfile;  ... 查看详情

docker镜像制作常用官方基础系统镜像的选择(代码片段)

Docker镜像为了满足业务需求,我们通常需要基于官方Linux系统镜像制作私有镜像选择合适的的Docker官方基础Linux系统镜像成为了首先需要考虑的事情Docker镜像是只读的docker容器模板,封装着启动docker容器所需的文件系统结... 查看详情

docker快速入门——docker镜像制作(代码片段)

Docker快速入门——Docker镜像制作一、Dockerfile脚本1、Dockerfile脚本简介Dockerfile是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容就是描述该层应当如何构建。Dockerfile文件示例如下... 查看详情

docker镜像管理基础(代码片段)

docker镜像管理基础文章目录docker镜像管理基础镜像的概念docker镜像层docker存储驱动AUFSOverlayFSDeviceMapperdockerregistrydocker镜像的制作DockerHubdocker镜像的获取镜像的生成基于容器制作镜像镜像的概念镜像可以理解为应用程序的集装箱&#x... 查看详情

docker镜像管理基础(代码片段)

docker镜像管理基础文章目录docker镜像管理基础镜像的概念docker镜像层docker存储驱动AUFSOverlayFSDeviceMapperdockerregistrydocker镜像的制作DockerHubdocker镜像的获取镜像的生成基于容器制作镜像镜像的概念镜像可以理解为应用程序的集装箱&#x... 查看详情

docker制作镜像的方法(代码片段)

docker镜像简介docker镜像是分层的,由底层网上叠加下载。dockerfille是以文本的方式生成镜像,他的好处在于生成镜像后可以查看生成流程。相对于dockercommit,使它更加的安全可靠。使用dockerfile时必须有一个以Dockerfile... 查看详情

docker制作镜像的方法(代码片段)

docker镜像简介docker镜像是分层的,由底层网上叠加下载。dockerfille是以文本的方式生成镜像,他的好处在于生成镜像后可以查看生成流程。相对于dockercommit,使它更加的安全可靠。使用dockerfile时必须有一个以Dockerfile... 查看详情

3.docker的镜像制作(代码片段)

3.Docker的镜像制作容器优化使用对应版本的centos做yum源参考文档>>https://www.cnblogs.com/longloved/p/14918224.html在docker镜像中安装>>yuminstall-yopenssh*>>yuminstall-yopenssh-server启动ssh服务>>/etc/init.d/ssh 查看详情

关于制作docker镜像?|dockerfile快速开始(代码片段)

文章目录一、关于制作Docker镜像?🐋1.Docker镜像的构建原理和方式1.1Docker镜像的构建方式使用场景和选型二、Dockerfile快速开始什么是DockerfileDockerfile的基本结构Dockerfile常用的指令FROM命令LABELWORKDIRRUNCOPYCMDEXPOSEENTRYPOINTCMD与E... 查看详情

我的docker随笔36:定制jenkins镜像(代码片段)

...必要研究制作自定义的镜像。官方提供了各版本的脚本和Dockerfile,可以直接用这些文件生成镜像,笔者认为,可以在官方镜像基础直接修改、新加功能。二、技术小结根据实际情况选定jenkins版本。在该版本基础上再... 查看详情

docker随笔2--数据卷(代码片段)

...期长,直到没有容器使用。3-2:创建数据卷:  在使用dockerrun的时候,可以使用 查看详情

玩转开源制作docker镜像(代码片段)

...环境是一个比较费时的事情,这个时候可以自己制作一个Docker镜像,然后把编译环境在Docker镜像里面配置好,以后同步环境就非常方便了,接下来我们就一起来看一下如何制作一个Docker镜像。1.制作前准备登录DockerHub,https://cloud... 查看详情

docker镜像制作!(代码片段)

基于dockerfile制作镜像Dockerfile操作指令制作nginx镜像nginx镜像优化制作Tomcat镜像构建MySQL镜像Dockerfile操作指令指令含义FROM镜像指定镜像所基于的镜像,第一条命令必须是FROM指令,没创建一个镜像就要一条FROM指令MAINTAINER名... 查看详情

docker镜像制作!(代码片段)

基于dockerfile制作镜像Dockerfile操作指令制作nginx镜像nginx镜像优化制作Tomcat镜像构建MySQL镜像Dockerfile操作指令指令含义FROM镜像指定镜像所基于的镜像,第一条命令必须是FROM指令,没创建一个镜像就要一条FROM指令MAINTAINER名... 查看详情