docker-compose: 部署蝉道

本贴最后更新于 2156 天前,其中的信息可能已经斗转星移

ZenTaoPMS 的发布并不难,利用 Docker 进行部署也很容易,但是利用 Docker-Compose 一键编排的资料却很少,这篇博客分享的内容,是利用 docker-compose 实现一键部署蝉道 9.8.3 开源版本。

前言

按照惯例,先上项目源代码:liumapp/zentao-in-docker

环境部署

蝉道 9.8.3 的环境配置无非经典的 LNMP 或者 LAMP,这里我们选用 LNMP(CentOS7+Nginx+Mysql+PHP5.6)。

那么,直接上 docker-compose.yml 的文件内容:

version: "2"

services:
  mysql:
	container_name: mysql
	image: mysql:5.5.60
	restart: always
	volumes:
	  - ./mysql/data:/var/lib/mysql
	  - ./mysql/conf/mysqld.conf:/etc/mysql/mysql.conf.d/mysqld.cnf
	ports:
	  - 3306:3306
	environment:
	  - MYSQL_ROOT_PASSWORD=adminadmin
	networks:
	  - zentao-server    

mysql 的环境配置,需要注意的地方除去端口、密码及 volumes 之外,便是一个 networks 了,在 docker-compose 完成 up 的瞬间,一个新的 networks 会用来连接这些 services,networks 内部的的 service 可以直接通过 service 的 name 进行通讯,比如,我们可以让运行在 php5 这个 service 下的蝉道应用通过 hostname:mysql 来与 mysql service 建立数据库的连接,而不是用 localhost 或者 127.0.0.1(事实上用 localhost 或者 127.0.0.1 也无法建立于 mysql 的连接,如果它们部署在同一台宿主机上的话)。

  nginx:
	container_name: nginx
	restart: always
	image: nginx:1.13
	ports:
	  - 80:80
	  - 8080:8080
	  - 443:443
	  - 5050:5050
	  - 5553:5553
	volumes:
	  - ./conf/vhosts:/etc/nginx/conf.d
	  - ./logs:/var/log/nginx
	  - ./www/:/var/www/
	networks:
	  - zentao-server
	  

Nginx 的环境配置。

  php5:
	container_name: php5
	restart: always
	image: php:5.6-fpm
	volumes:
	  - ./www/:/var/www/
	  - ./conf/php/:/usr/local/etc/php/conf.d/
	expose: 
	  - 9000
	networks:
	  - zentao-server
	command: 
	  - /bin/bash
	  - -c
	  - |
		  docker-php-ext-install pdo_mysql mysqli
		  php-fpm

PHP 的环境配置,事实上,唯一的难点就在这里。
因为 PHP 并不是说拉来 image,运行成功就完事了,我们还需要让蝉道的代码 copy 到容器里去,同时配置蝉道所需要的 php 扩展,最重要的一个便是 pdo_mysql(相信很多小伙伴们,对于 PHP 扩展的安装深感头疼)。但是不要怕,利用 docker-compose 的命令便可以解决。

command: 
  - /bin/bash
  - -c
  - |
	  docker-php-ext-install pdo_mysql mysqli
	  php-fpm
	  

这几句命令的格式可能各位会以为是语法有问题,然而事实却是 docker-compose 下多行命令的写法。

当然,这几个命令的意思是:让 php 自己去安装 pdo_mysql 和 mysqli 的扩展(其实就是 phpize、./configure、make、make install、再配置 php.ini 那一套,只不过这几个命令把它简化了),最后再启动 php-fpm 去监听 9000 端口,至于 php 的配置文件,大家可以参考项目里面的/conf/php 下的文件。

  networks:
	zentao-server:
	  driver: bridge

最后便是给我们的 networks 起一个名字,方便管理下面的 services。

结尾

那么最后,简单运行一下

docker-compose up -d

然后在浏览器里面输入 http://testc.com:8080/www 便可以进入蝉道的安装界面。

当然,您需要稍微修改一下 hosts 文件,或者不这么做也可以,直接修改/conf/vhosts/zentaopms.conf 文件下的 server_name 及 listen 端口号也行。

  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 286 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    164 引用 • 407 回帖 • 526 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...