包含标签 Docker-Compose articles

基於 Docker Compose 的 Discuz X3.4

Discuz

Discuz!是個可免費下載的PHP網路論壇程式,簡稱DZ,由戴志康(Crossday)所創立,目前最新版本是Discuz! X3.4。[2]前身為Crossday Bulletin(CDB),最初改自XMBForum,爾後改寫成為現今的Discuz!社群論壇程式,由康盛創想所有(現已被騰訊收購)。現在Discuz!已成為大中華地區最多用戶使用的論壇程式。

我們直接使用先前介紹 架構一個基於Docker Compose 的 PHP Laravel 開發環境 的整個環境
準備好 docker 及 docker compose 的環境後我們就可以開始建置 Discuz 了

git clone https://github.com/roryamos/LaravelDev.git Discuz
cd Discuz
tree
.
├── composer.sh
├── docker-compose.yml
├── html
│   ├── index.html
│   ├── index.php
│   └── phpinfo.php
├── log
│   ├── nginx
│   └── php
├── mariadb
│   ├── my.cnf
│   └── run.sh
├── nginx
│   ├── default.conf
├── phpfpm
│   ├── php.ini
│   └── www.conf
├── README.md
├── restart.sh
└── var-lib-mysql

8 directories, 12 files

1. clone Discuz 最新的代碼

git clone https://gitee.com/ComsenzDiscuz/DiscuzX.git html/discuz

2. 修改 Nginx 的路徑配置

vi nginx/default.conf
--------------------------------
    root /var/www/html/discuz/upload;
    location / {
        root   /var/www/html/discuz/upload;
        index  index.html index.htm index.php;
    }
--------------------------------
./restart.sh

打開網址瀏覽 http://youripaddress/, 調整安裝嚮導所提示的檔案權限.
緊接著你會看到一個問題mysqli_connect() advice_mysqli_connect
Image of winrun

……

Continue reading

架構一個基於Docker Compose 的 PHP Laravel 開發環境

Docker Compose

操作過 Docker 指令的同學們,應該都嘗試過用指令的方式管理 Docker 容器, 當需要運行的容器愈來愈多時管理的指令是又多又複雜。 Docker Compose 是一個定義多個 Docker 容器的工具,讓我們可以使用 YAML 格式的配置文件管理多個容器, 並幫助我們快速的佈建一套系統,提供了單一的命令,我們可以一次性的運行或停止相互依賴的容器。

安裝 Docker

基本的安裝可以參考 Docker 安裝筆記 - 以LNMP為例的應用

安裝 Docker Compose

在安裝好Docker 之後、我們可以開始安裝 Docker Compose, 首先我們需要先安裝 python-pip

sudo yum install -y epel-release
sudo yum install -y python-pip

接下來就可以安裝Docker Compose了

pip install docker-compose

需要的話將 Python 相關的套件更新一下讓 Docker Compose 能夠順利運行

yum upgrade python*

PHP Laravel

Laravel 是一個網頁應用框架實現了MVC的架構,運用了 Composer 這個套件相依性管理系統,提供連接許多種類的RDBMS的方式, 提供開發語法糖使開發常見痛點的實現變的簡單,像是權限管理、路由、Sessions、及快取機制。

接下來我們試著以安裝 Laravel 的開發環境為例,進行 Docker Compose 的配置

1. 初始化我們的目錄結構

mkdir -p html log/nginx log/php mariadb nginx phpfpm var-lib-mysql
docker pull mariadb/server:10.3
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=passwd -d mariadb/server:10.3
docker cp mariadb:/etc/mysql/my.cnf ./mariadb/my.cnf
docker stop mariadb
docker rm mariadb

docker pull nginx:1.15
docker run --name nginx -v /data/html:/usr/share/nginx/html:ro -p 80:80 -d nginx:1.15
docker cp nginx:/etc/nginx/conf.d/default.conf ./nginx/default.conf
docker stop nginx
docker rm nginx

docker pull php:7.3-fpm
docker run --name php-fpm -p 9000:9000 -d php:7.3-fpm
docker cp php-fpm:/usr/local/etc/php-fpm.d/www.conf ./phpfpm/www.conf
docker cp php-fpm:/usr/local/etc/php/php.ini-production ./phpfpm/php.ini
docker stop php-fpm
docker rm php-fpm
tree .
.
├── docker-compose.yml
├── html
│   └── phpinfo.php
├── log
│   ├── nginx
│   └── php
├── mariadb
│   └── my.cnf
├── nginx
│   └── default.conf
├── phpfpm
│   ├── php.ini
│   └── www.conf
└── var-lib-mysql

8 directories, 6 files

2. 配置docker-compose.yml

主要是運行 Mariadb, nginx, php-fpm 這三個容器

……

Continue reading