docker 禅道 远程链接 MySQL

主要的坑在下边 红色字体:认真看

第一种方法

搜索镜像

docker search zentao

拉取镜像

docker pull easysoft/zentao:latest

启动容器

–name [容器名] 设置容器名称

-p [主机端口]:80 绑定端口

-v /home/zentao/zentaopms:/www/zentaopms 挂载数据目录

/home/zentao/mysql:/var/lib/mysql 挂载数据库目录

-e MYSQL_ROOT_PASSWORD=[数据库密码] 设置数据库密码

docker run --name [容器名] -p [主机端口]:80 -v /home/zentao/zentaopms:/www/zentaopms -v /home/zentao/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[数据库密码] -d easysoft/zentao:latest

第二种方法

1 docker -v

2.1 在线下载镜

12 拉取禅道开源版12.3.3版本命令如下:docker pull easysoft/zentao:12.3.3

123 [root@CN-HZ-Zentao ~]# docker image lsREPOSITORY TAG IMAGE ID CREATED SIZEeasysoft/zentao 12.3.3 6b51979725b5 10 months ago 633MB

3. 启动禅道容器

3.1 启动命令

# 官方给的命令:
docker run --name [容器名] -p [主机端口]:80 --network=[网络驱动名] --ip [容器IP] --mac-address [mac地址] -v [主机禅道目录]:/www/zentaopms -v [主机mysql目录]:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[数据库密码] -d easysoft/zentao:[镜像标签]

## 启动参数说明:
# 容器名:启动的容器名字,可随意指定;
# 主机端口:主机端口为web访问端口;
# 网络驱动名:刚刚创建的网络驱动名;
# 容器IP:在网络驱动范围内选择一个作为该容器的固定ip;
# mac地址:指定固定的mac地址,建议范围为02:42:ac:11:00:00 到 02:42:ac:11:ff:ff;
# 主机禅道目录:必须指定,方便禅道代码、附件等数据的持久化,非升级情况需指定空目录;
# 主机mysql目录:必须指定,方便禅道数据持久化,非升级情况需指定空目录;
# 数据库密码: 容器内置mysql用户名为root,默认密码123456,如果不修改可以不指定该变量,如果想更改密码可以设置 MYSQL_ROOT_PASSWORD变量来更改密码;
# 镜像标签:禅道版本。

# 实际上我们只需要按如下命令启动容器即可:
docker run --name zentao-server --restart always -d -p 80:80 -v /ichint/zentaopms:/www/zentaopms -v /ichint/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 easysoft/zentao:12.3.3

## 其中 --restart always 意思是在docker容器异常时自动重启。

3.2 查看是否启动成功

123 [root@CN-HZ-Zentao ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES8c24dfafdbef easysoft/zentao:12.3.3 "/.docker_init.sh" 6 weeks ago Up 6 weeks 0.0.0.0:80->80/tcp, :::80->80/tcp zentao-server
  1. 4. 安装禅道

然后点击【登录禅道管理系统】,输入帐号密码,就可以登录我们的禅道了。

  1. 5. 存在的问题及解决

问题1:容器内部的时间和宿主机时间不一致

问题2:如果想在外部连接禅道数据库是没办法的

这就需要我们对镜像进行定制和修改。

针对问题1,我们只需要在启动禅道容器的时候,加上参数: -v /etc/localtime:/etc/localtime:ro,即:

1 docker run --name zentao-server --restart always -d -p 80:80 -v /ichint/zentaopms:/www/zentaopms -v /ichint/mysqldata:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 easysoft/zentao:12.3.3

针对问题2,我们需要按如下步骤进行操作:

主要思路是:

  1. 进入容器

  2. 修改MySQL默认配置

  3. 授权登录

  4. 提交修改生成新的镜像

  5. 删除之前启动的容器

  6. 用新的镜像重新启动容器

操作过程中,数据不会丢失,这点不需要担心,因为我们将数据目录都映射到宿主机中了

## 开启docker部署的禅道数据库外部登录
# 进入容器
docker exec -ti zentao-server bash

找到MariaDB的配置文件"/etc/mysql/mariadb.conf.d/50-server.cnf",把"bind-address...."一行注释掉
接下来还要给账户分配权限,进入mysql命令行界面,输入:
mysql -uroot -p
输入密码:

## 在容器内的MySQL中执行如下命令:
select User, host from mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# 输入exit,退出MySQL,再次输入exit退出容器,然后将刚才对容器的修改进行提交,生成我们自己定义的镜像
docker commit 8c24dfafdbef myzentao:v2           #8c24dfafdbef 这个号码是 进入容器的号码,

# 然后关闭并删除旧的容器
docker stop zentao-server
docker rm zentao-server
# 或者:docker rm -f zentao-server

# 最后用我们自定义的镜像重新启动一个新的容器,并将数据库端口也映射出来
docker run --name zentao-server --restart always -d -p 80:80 -p 3306:3306 -v /ichint/zentaopms:/www/zentaopms -v /ichint/mysqldata:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d myzentao:v2
这样我们就可以在外部登录禅道的数据库了。

 

以下是 进入容器的号码

docker 禅道 远程链接 MySQL_第1张图片

坑在这里,需要再修改一次:

用新的镜像启动容器后,进入数据库配置文件,再次修改,

GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

FLUSH PRIVILEGES;

执行上面的命令。

这样我们就可以在外部登录禅道的数据库了。

docker 禅道 远程链接 MySQL_第2张图片

 

你可能感兴趣的:(docker,mysql,容器)