# 2024/05/03 這邊提醒一下,預設安裝,資料庫不需要密碼就能連線,這樣一般都不會有問題,因為資料庫沒有開放對外。若資料庫開放外面連線的話,建議先設定資料庫密碼 ,然後再改設定開放外面連線。以下是我將資料庫改完密碼後,再開放到外面透過3307連線 =========================== docker-compose.yml ===================================== version: '2' services: mariadb: image: 'docker.io/bitnami/mariadb:10.6.8' ports: - '3307 :3306' environment:# - ALLOW_EMPTY_PASSWORD=yes - MARIADB_ROOT_PASSWORD=root的密碼 - MARIADB_USER=bn_moodle - MARIADB_PASSWORD=密碼 - MARIADB_DATABASE=bitnami_moodle - MARIADB_CHARACTER_SET=utf8mb4 - MARIADB_COLLATE=utf8mb4_unicode_ci volumes: - 'mariadb_data:/bitnami/mariadb' moodle: image: 'docker.io/bitnami/moodle:4.1.5' ports: - '8090:8080' - '8446:8443' environment: - MOODLE_DATABASE_HOST=192.168.1.1(主機名稱或ip) - MOODLE_DATABASE_PORT_NUMBER=3307 - MOODLE_DATABASE_USER=bn_moodle - MOODLE_DATABASE_NAME=bitnami_moodle - MOODLE_DATABASE_PASSWORD=密碼 - MOODLE_DATABASE_ROOT_PASSWORD=root的密碼 # - ALLOW_EMPTY_PASSWORD=yes - MOODLE_SMTP_HOST=郵件伺服器IP - MOODLE_SMTP_PORT=587 - MOODLE_SMTP_USER=帳號 - MOODLE_SMTP_PASSWORD=密碼 - MOODLE_SMTP_PROTOCOL=tls volumes: - 'moodle_data:/bitnami/moodle' - 'moodledata_data:/bitnami/moodledata' depends_on: - mariadb hostname: 'moodle.test.com ' volumes: mariadb_data: driver: local moodle_data: driver: local moodledata_data: driver: local =========================== docker-compose.yml ===================================== 若一開始測試系統安裝成功後(不需要密碼),之後要改需要密碼方式,這樣啟動會報告錯誤。 請改docker volume moodle_data 裡面的config.php ,在裡面加上密碼,才能正常運作。 $CFG->dbpass = '密碼 ';
docker搜尋一下, 找到 bitnami 製作的moodle images , 照著做滿簡單就能架站
0. 建立網路
docker network create moodle-network
1. 下載docker compose yaml檔案
curl -sSL https://raw.githubusercontent.com/bitnami/bitnami-docker-moodle/master/docker-compose.yml > docker-compose.yml
2. 修改yml如下
version: '2' services: mariadb: image: 'docker.io/bitnami/mariadb:10.6 ' hostname: mariadb environment: # 若開放外面連線,請務必加上#,否則很容易被入侵 - ALLOW_EMPTY_PASSWORD=yes - MARIADB_USER=bn_moodle - MARIADB_DATABASE=bitnami_moodle - MARIADB_CHARACTER_SET=utf8mb4 - MARIADB_COLLATE=utf8mb4_unicode_ci volumes: - 'mariadb_data:/bitnami/mariadb' moodle: image: 'docker.io/bitnami/moodle:4.0.1 ' ports: - '8088 :8080' - '8445 :8443' environment: - MOODLE_DATABASE_HOST=mariadb - MOODLE_DATABASE_PORT_NUMBER=3306 - MOODLE_DATABASE_USER=bn_moodle - MOODLE_DATABASE_NAME=bitnami_moodle # 若開放外面連線,請務必加上#,否則很容易被入侵 - ALLOW_EMPTY_PASSWORD=yes - MOODLE_SMTP_HOST=ip - MOODLE_SMTP_PORT=587 - MOODLE_SMTP_USER=xxx - MOODLE_SMTP_PASSWORD=yyy - MOODLE_SMTP_PROTOCOL=tls volumes: - 'moodle_data:/bitnami/moodle' - 'moodledata_data:/bitnami/moodledata' depends_on: - mariadb hostname: moodle volumes: mariadb_data: driver: local moodle_data: driver: local moodledata_data: driver: local
3. 這個moodle container 內部預設的http port 8080 , https port 8443, 我改成 8088 與 8445
docker-compose up -d
4. 瀏覽器輸入 https://ip:8445 登入, 預設帳號 user , 密碼 bitnami
5. 設定docker本體主機上面的let’s enpcrypt後, 進行httpd apache 與container對應工作
<VirtualHost *:443>
ServerName 主機名稱
ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/<主機名稱> /cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/<主機名稱> /privkey.pem
SSLCACertificateFile /etc/letsencrypt/live/<主機名稱> /fullchain.pem
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
ProxyPass / http://localhost:8088 /
ProxyPassReverse / http://localhost:8088 /
<Location />
Order allow,deny
Allow from all
</Location>
</VirtualHost>
6. 進入container設定網址(預設為 http://127.0.0.1:8080
[root@firewall ~]# docker exec -it moodle_hlmt_moodle_1 bash
root@moodle:/# vi /bitnami/moodle/config.php
//////////////////////////////////////////////////
if (empty($_SERVER['HTTP_HOST'])) {
$_SERVER['HTTP_HOST'] = '127.0.0.1:8080';
}
改成
if (empty($_SERVER['HTTP_HOST'])) {
$_SERVER['HTTP_HOST'] = '你的網址';
}
//////////////////////////////////////////////////
2022/02/18 —
安裝的時候, 一直無法啟用, 後來才發現,原來docker本身已經有container叫做mariadb , 但moodle預設也剛好是,於是就衝突, 衝突之後就算修改docker-compose.yml的資料庫名稱, 一樣沒反應, 所以 解決方式應該是把這兩個container獨立出一個區域網路,
我不是很熟docker-compose如何自成一個網路, 版本太亂, 因此只好轉向改用一般方式啟用, 這也是官網建議的方式.
docker network create moodle-network
docker volume create --name moodle_mariadb_data
docker run --restart always -d --name moodle-mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MARIADB_USER=bn_moodle \
--env MARIADB_PASSWORD=bitnami \
--env MARIADB_DATABASE=bitnami_moodle \
--network moodle-network \
--volume moodle_mariadb_data :/bitnami/mariadb \
bitnami/mariadb:latest
建立moodle 到目前為止, 我覺得沮喪的是以下這一段常常失敗, 原來主機效能太差, 還是會造成影響, 因為資料庫需要時間建立資料, 這時候就不能啟用moodle主系統, 因此必須等上一段資料庫跑久一點大概5分鐘, 再執行, 當然主機效能好可能就秒開.
docker volume create --name moodle_moodle_data
docker run --restart always -d --name moodle \
-p 8082 :8080 -p 8445 :8443 \
--env MOODLE_DATABASE_HOST=moodle-mariadb \
--env ALLOW_EMPTY_PASSWORD=yes \
--env MOODLE_DATABASE_USER=bn_moodle \
--env MOODLE_DATABASE_PASSWORD=bitnami \
--env MOODLE_DATABASE_NAME=bitnami_moodle \
--network moodle-network \
--volume moodle_moodle_data :/bitnami/moodle \
bitnami/moodle:latest
注意事項第一次啟動會很慢,至少10分鐘,大概是建立一些元件吧