1.Pull Image:先下載需要的Image。

docker pull nextcloud
docker pull mariadb
docker pull phpmyadmin/phpmyadmin

2.Run Container

順序:先安裝MariaDB→phpmyadmin→Nextcloud

(1)MariaDB → Container別名:kccnas2db,密碼:Kcc@35954967,DB的volume放D槽需加上"--innodb-flush-method=fsync"。
docker run --name kccnas2db -h kccnas2db -e MYSQL_ROOT_PASSWORD=Kcc@35954967 -v d:/docker/Mariadb:/var/lib/mysql --network compose_default -d mariadb --innodb-flush-method=fsync

(2)phpmyadmin → Container別名:kccmyadmin,Hostname:kccmyadmin,連結:kccnas2db,連結別名:myadmin,PORT:45082
docker run -itd --name kccmyadmin -h kccmyadmin -e PMA_HOST=kccnas2db --link kccnas2db:myadmin -p 45082:80 --network compose_default phpmyadmin/phpmyadmin

(3)Nextcloud → Container別名:nextcloud,Hostname:kccnextcloud,連結:kccnas2db,連結別名:DB,PORT:45081,Volume:d:/Nextcloud
docker run -itd -p 45081:80 --name nextcloud -h kccnextcloud -v d:/docker/Nextcloud:/var/www/html --link kccnas2db:DB --network compose_default nextcloud

上方3個container跑完,用瀏覽器開啟nextcloud時,第一次需先設定nextcloud連接DB的參數與管理者帳密。
可將nextcloud連接DB的環境參數在docker run時先設定,當container完成時,只需設定管理者密碼即可。docker run如下:
docker run -itd -p 45081:80 --name nextcloud -h kccnextcloud -v d:/docker/Nextcloud:/var/www/html --link kccnas2db:DB --network compose_default -e MYSQL_DATABASE:kccnas2db -e MYSQL_USER:root -e MYSQL_PASSWORD:Kcc@35954967 -e MYSQL_HOST:kccnas2db:3306 nextcloud

3.修改Nextcloud參數:開啟原檔將以下參數新增,不要用已改好的config.php檔案做取代。
(1)在config.php新增,避免docker版nextcloud檢查權限問題
'check_data_directory_permissions' => false,

(2)trusted_domains中預設只有設定IP,新增domain name,避免輸入domain name時,無法開啟網頁。
'trusted_domains' =>
array (
0 => '192.168.1.15:45081',
1 => 'nas2.kcc-zip.com:45081',
2 => '59.124.103.37:45081',


注意事項:

1.network中的composefile_default為當用docker-compose建立container時,所自行產生的network群組。
此名稱是依docker-compose.yml所在的資料夾名稱所建立的。

2.DB與nextcloud的資料夾皆建立在Host的D槽,並非在VM內,故將此兩個資料夾與"MobyLinuxVM.vhdx"檔案備份,即可轉移至其他PC重啟。

3.DB與nextcloud的資料夾備份時間需一致,避免DB紀錄與檔案資料不同步,造成顯示異常。

4.修改Nextcloud參數:開啟原檔將參數新增,不要用已改好的config.php檔案做取代。
如用已改好的config.php檔案做取代,則DB的container logs出現:access denied for user 'admin'@'localhost' (using password yes)。
因為每次建立後的參數會有所不同(config.php內紀錄的password會以亂數產生),如用已先建立的檔案取代,則會跟DB的資料不同。


注意:
當主機重開機時,Docker for Desktop會啟動,container會啟動,此時nextcloud登入畫面會變回設定畫面。
須將container全部 STOP 後,再 RESTSRT 才會恢復成員先以設定好的登入畫面。