玩客雲(OneCloud) 的Docker應用篇
前言: |
上篇講到玩客雲(OneCloud) 的設置與使用 ,下篇分享的是
Docker
的安裝與應用。
Docker
越來越受到大家歡迎,我覺得在安裝複雜軟件時可以免依賴環境(編譯環境)下簡單完成部署,如:Home Assistant
,因為每一個容器(container
)也是一個獨立進程共享主機內核, 可以做到非常輕量,更新或者升級也是非常方便。
目錄內容: |
下載工具
網頁版目錄分享工具
私有雲
- 安裝開源博客WordPress
智能家居助手
操作步驟: |
所有的配置還是基於暮冬初一大佬適配的Armbian
平台,版本:Linux onecloud 5.14.21-meson
。
Docker及Docker-Compose的安裝 |
玩客雲(OneCloud
)的Armbian
系統是基於Ubuntu Jammy 22.04 LTS
適配,所以安裝按官方Install Docker Engine on Ubuntu的教程一步步複製及貼上。
更新及安裝套件,可以透過 HTTPS 使用軟件儲存庫(repository)
sudo apt update && sudo apt install ca-certificates curl gnupg lsb-release -y
新增 Docker
的官方 GPG
金鑰
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
儲存設定軟件儲存庫,添加Docker
目錄
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安裝 Docker
引擎
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
新增現有用戶到docker
群組,使可執行Docker Engine
的權限
sudo usermod -aG docker $USER
安裝Docker Compose 程式
Compose
是用於編輯和運行多容器Docker
應用程式工具。Compose
可以使用YAML
檔來設定應用程式的服務。然後,使用單個命令(docker-compose up -d
),從配置中創建並啟動所有服務。
sudo apt install docker-compose
curl -L https://github.com/linuxserver/docker-docker-compose/releases/download/1.28.5-ls32/docker-compose-armhf | sudo tee /usr/local/bin/docker-compose >/dev/null
添加可執行權限
sudo chmod +x /usr/local/bin/docker-compose
重新登入後就可以現有用戶執行docker
指令
Docker-Compose 基礎指令 |
透過 docker-compose
指令可以一次管理多個容器。
例子¶
動作 | 指令 |
---|---|
啟動服務 | docker-compose up -d |
開始服務 | docker-compose start |
重新啟動服務 | docker-compose restart |
停止服務 | docker-compose stop |
下載更新 | docker-compose pull |
停止及卸載服務 | docker-compose down |
持續查看日誌 | docker-compose logs --tail=100 -f |
進入容器內 | docker-compose exec <service> bash |
刪除所有未使用的容器、網路、映像 及卷 | docker system prune -af |
安裝 Aria2 下載工具 |
P3TERX 大佬的Aria2 Pro
一直是我的主力下載工具,Aria2 支持 BT、磁力、HTTP、FTP 等多種下載協議,作為24小時離線下載的服務的首選。官方網站: https://aria2.github.io/
建立程式和下載的目錄
mkdir -p /home/$USER/apps/aria2 && mkdir -p /mnt/mmc/downloads
查看用戶的UID
及GID
,實現下載的所有檔案套用當前用戶的權限(為擁有者)。
id $USER
uid=1000(onecloud) gid=1000(onecloud) groups=1000(onecloud),27(sudo),100(users),999(docker),117(mysql)
進入程序目錄
cd /home/$USER/apps/aria2/
建立Aria2 Pro
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: '3'
services:
Aria2-Pro:
container_name: aria2-pro
image: p3terx/aria2-pro
environment:
- PUID=1000
- PGID=1000
- UMASK_SET=022
- RPC_SECRET=P3TERX
- RPC_PORT=6800
- LISTEN_PORT=6888
- DISK_CACHE=64M
- IPV6_MODE=false
- UPDATE_TRACKERS=true
- CUSTOM_TRACKER_URL=
- TZ=Asia/Hong_Kong
volumes:
- $PWD/config:/config
- /mnt/mmc/downloads:/downloads
network_mode: host
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 1m
# AriaNg is just a static web page, usually you only need to deploy on a single host.
AriaNg:
container_name: ariang
image: p3terx/ariang
command: --port 6880 --ipv6
network_mode: host
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 1m
EOF
選項 | 註解 |
---|---|
container_name: aria2-pro | 容器名稱aria2-pro ,可自定義以示區分。 |
- PUID=1000 | 用戶的權限。 |
- PGID=1000 | 用戶的群組權限。 |
- RPC_SECRET=P3TERX | Aria2 程式 密碼(金鑰)為P3TERX ,可自定義。 |
- $PWD/config:/config | 配置文件儲存目錄: /home/$USER/apps/aria2/config |
- mnt/mmc/downloads:/downloads | 檔案的下載目錄為: mnt/mmc/downloads |
network_mode: host | 使用 host 網絡模式,直接使用宿主機網絡。 |
restart: unless-stopped | 設置容器重啟策略。 |
--log-driver json-file | 設置日誌記錄格式為 json 格式。 |
--log-opt max-size=1m | 日誌大小限制為1MB,防止 Aria2 持續下載產生大量的日誌佔用磁盤空間。 |
AriaNg: | 是另一個容器的網頁靜態頁面,方便使用WEB UI 操作,端口: 6880 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
得益於 Docker Compose CLI
的簡單性,只需一個指令就可以同時拉取多個容器并建立程式。
檢查容器的是否成功啟動
docker-compose ps
aria2-pro /init Up
ariang /darkhttpd /AriaNg --port ... Up
現在可以透過瀏覽器開啟Aria2
服務輕鬆哋下載,http://onecloud:6880
安裝 qBittorrent 下載工具 |
qBittorrent
專案旨在提供μTorrent
的開源軟體替代品,Aria2
的另一選擇。Docker
容器的選擇還是P3TERX 大佬的的優化版。官方網站: qBittorrent Official Website
Docker: p3terx/qbittorrent
建立程式和下載的目錄
mkdir -p /home/$USER/apps/qBittorrent && mkdir -p /mnt/mmc/downloads
進入程序目錄
cd /home/$USER/apps/qBittorrent/
建立qBittorrent
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: '3'
services:
qbittorrent:
container_name: qbittorrent
image: p3terx/qbittorrent
environment:
- PUID=$UID
- PGID=$GID
- UMASK_SET=022
- QBT_WEBUI_PORT=18080
- TZ=Asia/Hong_Kong
volumes:
- $PWD/config:/qBittorrent
- /mnt/mmc/downloads:/downloads
network_mode: host
restart: unless-stopped
EOF
選項 | 註解 |
---|---|
container_name: qbittorrent | 容器名稱qbittorrent ,可自定義以示區分。 |
- PUID=$UID | 當前用戶的權限。 |
- PGID=$GID | 當前用戶的群組權限。 |
- QBT_WEBUI_PORT=18080 | 網頁WEB UI 操作端口: 18080。 |
- $PWD/config:/qBittorrent | 配置文件儲存目錄: /home/$USER/apps/qbittorrent/config |
- mnt/mmc/downloads:/downloads | 檔案的下載目錄為: mnt/mmc/downloads |
network_mode: host | 使用 host 網絡模式,直接使用宿主機網絡。 |
restart: unless-stopped | 設置容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
qbittorrent /init Up
現在可以透過瀏覽器開啟qbittorrent服務輕鬆哋下載,http://onecloud:18080
安裝 transmission 下載工具 |
Transmission
是一種BitTorrent
客戶端,特點是一個跨平台的後端和其上的簡潔的用戶界面。。
建立程式和下載的目錄
mkdir -p /home/$USER/apps/transmission && mkdir -p /mnt/mmc/downloads
進入程序目錄
cd /home/$USER/apps/transmission/
建立transmission
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: "2.1"
services:
transmission:
image: lscr.io/linuxserver/transmission:latest
container_name: transmission
environment:
- PUID=65534
- PGID=65534
- TZ=Asia/Hong_Kong
- TRANSMISSION_WEB_HOME=/transmissionic/ #optional
# - USER=username #optional
# - PASS=password #optional
# - WHITELIST=iplist #optional
# - PEERPORT=peerport #optional
# - HOST_WHITELIST=dnsname list #optional
volumes:
- ./data:/config
- ./downloads:/downloads
- ./watch:/watch
ports:
- 9091:9091
- 51413:51413
- 51413:51413/udp
restart: unless-stopped
EOF
選項 | 註解 |
---|---|
container_name: transmission | 容器名稱transmission ,可自定義以示區分。 |
- PUID=65534 | nobody 用戶的權限。 |
- PGID=65534 | nogroup 用戶的群組權限。 |
9091:9091 | 網頁WEB UI 操作端口: 9091。 |
- ./data:/config | 配置文件儲存目錄: /home/$USER/apps/transmission/data |
- ./downloads:/downloads | 檔案的下載目錄為: /home/$USER/apps/transmission/downloads |
- ./watch:/watch | 監視種子的目錄, 路徑為: /home/$USER/apps/transmission/watch |
restart: unless-stopped | 設置容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
transmission /init Up
現在可以透過瀏覽器開啟transmission服務輕鬆哋下載,http://onecloud:9091
安裝 h5ai 檔案目錄分享 |
h5ai
是透過 Web 以目錄索引(index
)列表的方式管理檔案。是一款外觀優雅且非常實用的目錄列表程序,適合用來做個人分享網盤。官方網站: h5ai · modern HTTP web server
Docker: awesometic/h5ai
建立程式和分享的目錄
mkdir -p /home/$USER/apps/h5ai && mkdir -p /mnt/mmc
進入程序目錄
cd /home/$USER/apps/h5ai/
建立h5ai
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: "3"
services:
filebrowser:
image: awesometic/h5ai
container_name: h5ai
ports:
- 8090:80
volumes:
- /mnt/mmc:/h5ai
- ${PWD}/config:/config
environment:
- PUID=$UID
- PGID=$GID
- TZ="Asia/Hong_Kong"
# - HTPASSWD=true
# - HTPASSWD_USER=awesometic
# - HTPASSWD_PW=awesometic
restart: unless-stopped
EOF
選項 | 註解 |
---|---|
container_name: h5ai | 容器名稱h5ai ,可自定義以示區分。 |
- PUID=$UID | 當前用戶的權限。 |
- PGID=$GID | 當前用戶的群組權限。 |
- 8090:80 | 網頁WEB UI 操作端口: 8090。 |
${PWD}/config:/config | 配置文件儲存目錄: /home/$USER/apps/h5ai/config |
/mnt/mmc:/data | 檔案的分享目錄路徑為: mnt/mmc |
- HTPASSWD=true | 密碼保護開啟 (* 需要刪除#號 註釋) |
- HTPASSWD_USER=h5ai | 密碼用戶名稱為 h5ai (* 需要刪除#號 註釋) |
- HTPASSWD_PW=awesometic | 保護的密碼為 awesometic (* 需要刪除#號 註釋) |
restart: unless-stopped | 設置容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
h5ai /init.sh Up 0.0.0.0:8090->80/tcp,:::8090->80/tcp
現在可以透過瀏覽器開啟h5ai
服務,http://onecloud:8090
安裝 Apaxy 檔案目錄分享 |
Apaxy
是一個簡單且可自定義的主題,Web
目錄的分享工具。官方網站: Apaxy: A simple, customisable Apache directory theme (oupala.github.io)
GitHub: GitHub - oupala/apaxy: a simple, customisable theme for your apache directory listing
進入程序目錄
mkdir -p /home/$USER/apps && cd /home/$USER/apps
拉取Apaxy
程式檔案及進入下載的目錄
git clone https://github.com/oupala/apaxy.git && cd apaxy/
修改Apaxy
的Docker-Compose
YAML
檔
vi docker-compose.yml
按ESC
退回到一般模式,輸入:wq
儲存及離開
選項 | 註解 |
---|---|
container_name: apaxy | 新增容器名稱apaxy ,可自定義以示區分。(可選) |
- '2080:8080' | 錯開程式的端為: 2080 (原端口是 80 )。 |
/mnt/mmc/ | 修改檔案的分享目錄路徑為: mnt/mmc (原路徑為 ./share/ )。 |
restart: unless-stopped | 新增容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
apaxy httpd-foreground Up 80/tcp, 0.0.0.0:2080->8080/tcp,:::2080->8080/tcp
現在可以透過瀏覽器開啟apaxy
服務,http://onecloud:2080
安裝File Browser 網頁檔案管理 |
File Browser
可以透過(瀏覽器) Web 界面輕鬆地存取文件,功能包括上傳,刪除,預覽,重命名和編輯檔案。同時允許多個用戶建立,每個用戶都可以擁有自己的目錄。官方網站: https://filebrowser.org/
Docker: hurlenko/filebrowser
建立程式和管理的目錄
mkdir -p /home/$USER/apps/filebrowser && mkdir -p /mnt/mmc
進入程序目錄
cd /home/$USER/apps/filebrowser/
建立File Browser
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: "3"
services:
filebrowser:
image: hurlenko/filebrowser
container_name: filebrowser
ports:
- 8080:8080
volumes:
- /mnt/mmc:/data
- ${PWD}/config:/config
environment:
- PUID=1000
- PGID=1000
- TZ="Asia/Hong_Kong"
- FB_BASEURL=/
restart: always
EOF
選項 | 註解 |
---|---|
container_name: filebrowser | 容器名稱filebrowser ,可自定義以示區分。 |
- PUID=1000 | 用戶的權限。 |
- PGID=1000 | 用戶的群組權限。 |
- 8080:8080 | 網頁WEB UI 操作端口: 8080。 |
${PWD}/config:/config | 配置文件儲存目錄: /home/$USER/apps/filebrowser/config |
/mnt/mmc:/data | 管理檔案的目錄路徑為: mnt/mmc |
restart: always | 設置容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
filebrowser /filebrowser --root=/data ... Up 0.0.0.0:8080->8080/tcp,:::8080->8080/tcp
現在可以透過瀏覽器開啟filebrowser
服務,http://onecloud:8080
安裝 KodCloud 可道雲 |
KodCloud
是一款雲端文檔管理工具,在網盤內也可以像在電腦上操作一般熟悉而流暢,熟悉框選、拖拽、快捷鍵,從來沒有這麼簡單方便。
優點:
- 雲存儲 (私有部署、集中存管、卓越體驗、插件市場)
- 雲辦公 (一鍵分享、輕松預覽、同步備份)
- 雲協同 (協同編輯、劃詞標注、即寫即存、歷史版本)
- 雲管理 (組織架構、靈活權限、操作日誌)
- 雲拓展 (OpenAPI、單點登錄、對象存儲、擴展框架)
- 新體驗 (Windows體驗、企業LOGO)
建立程式和分享的目錄
mkdir -p /home/$USER/apps/kodbox && mkdir -p /mnt/mmc
進入程序目錄
cd /home/$USER/apps/kodbox/
建立kodbox
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: "2.1"
services:
db:
image: lscr.io/linuxserver/mariadb:latest
container_name: mariadb
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=ROOT_ACCESS_PASSWORD
- TZ=Asia/Hong_Kong
- MYSQL_DATABASE=USER_DB_NAME #optional
- MYSQL_USER=MYSQL_USER #optional
- MYSQL_PASSWORD=DATABASE_PASSWORD #optional
volumes:
- ${PWD}/db:/config
# ports:
# - 3306:3306
restart: unless-stopped
kod:
image: kodcloud/kodbox
container_name: kodbox
ports:
- 3080:80
depends_on:
- db
links:
- db
- redis
volumes:
- "/mnt/mmc/site:/var/www/html"
restart: unless-stopped
redis:
image: redis:alpine
container_name: redis
environment:
- "TZ=Asia/Hong_Kong"
restart: unless-stopped
EOF
docker-compose.yml
文件包括mariaDB
數據庫 、KobCloud
程式 及redis
內存數據庫。由於玩客雲(OneCloud
)的CPU
架構是arm
32位,所以數據庫會選用linuxserver/mariadb
。參數
depends_on
是在docker-compose
啟動服務之前先要把depends_on
指定的服務啟動起來。
選項 | 註解 |
---|---|
container_name: kodbox | 程式容器名稱kodbox ,可自定義以示區分。 |
container_name: mariadb | 數據庫容器名稱mariadb ,可自定義以示區分。 |
container_name: redis | 數據庫容器名稱redis ,可自定義以示區分。 |
ROOT_ACCESS_PASSWORD | 數據庫管理員密碼,可自定義 。 |
USER_DB_NAME | 數據庫名稱,可自定義 (如: kodbox_db )。 |
MYSQL_USER | 數據庫用戶名稱,可自定義 (如: kodbox )。 |
DATABASE_PASSWORD | 數據庫的密碼,可自定義 (如: kodbox_password )。 |
- ${PWD}/db:/config | 數據庫檔案路徑${PWD}/db 即(/home/$USER/apps/kodbox/db ),可自定義 。 |
- "/mnt/mmc/site:/var/www/html" | /mnt/mmc/site 是kodbox 持久化目錄位置,可自定義。 |
restart: unless-stopped | 新增容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
kodbox /entrypoint.sh /usr/bin/su ... Up 0.0.0.0:3080->80/tcp,:::3080->80/tcp, 9000/tcp
mariadb /init Up 3306/tcp
redis docker-entrypoint.sh redis ... Up 6379/tcp
現在可以透過瀏覽器開啟kodbox
服務,http://onecloud:3080
因為受限於玩客雲(OneCloud
) 是32位的ARM
架構,所以只能上載2G以內的檔案。
安裝 FileRun 私有雲 |
FileRun
是一款輕量的WEB
界面儲存、同步及分享工具。近似於NextCloud
。官方網站: FileRun - Selfhosted File Sync and Share
Docker安裝: docker-arm :: FileRun Documentation
優點:
- 適配移動裝置。
- 支持多種協定:
FTP
,SMB
或者WebDAV
。 - 在線共用相冊,支持快速生成縮圖和預覽。
- 透過
NextCloud
的客戶端軟件連接,從而支援多平台(Windows、macOS、Linux、Android、IOS)。 - 支持多用戶協作。
建立程式的目錄
mkdir -p /home/$USER/apps/filefrun
進入程序目錄
cd /home/$USER/apps/filefrun/
設定環境變量
docker-compose.yml
文件包括mariaDB
數據庫 和filerun
程式 引用相同的變量。為了減少繁瑣及重複的輸入及精簡配置,此時就可以建立.env 變量配置檔案作為docker-compose.yml
文件預設的變量值。
cat >> .env << EOF
# Define FileFun Environment
ROOT_PW=root_password
DATABASE=filerun_db
DB_USER=fielrun
DB_PW=filerun_password
UID=1000
GID=1000
EOF
選項 | 註解 |
---|---|
ROOT_PW=root_password | 數據庫root 密碼是root_password ,可自定義以示區分。 |
DATABASE=filerun_db | 數據庫名稱是filerun_db ,可自定義以示區分。 |
DB_USER=fielrun | 數據庫新建用戶名稱是fielrun ,可自定義以示區分。 |
DB_PW=filerun_password | 數據庫密碼是 filerun_password ,可自定義 。 |
UID=1000 | 使用者 ID |
GID=1000 | 使用者群組 ID |
讀取變量參數:
source .env
建立filefrun
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: "3"
services:
db:
image: linuxserver/mariadb:latest
container_name: mariadb
environment:
PUID: "${UID}"
PGID: "${GID}"
MYSQL_ROOT_PASSWORD: "${ROOT_PW}"
TZ: Asia/Hong_Kong
MYSQL_DATABASE: "${DATABASE}"
MYSQL_USER: "${DB_USER}"
MYSQL_PASSWORD: "${DB_PW}"
volumes:
- ${PWD}/db:/config
# ports:
# - 3306:3306
restart: unless-stopped
web:
image: filerun/filerun:arm32v7
container_name: filerun
environment:
FR_DB_HOST: db
FR_DB_PORT: 3306
FR_DB_NAME: "${DATABASE}"
FR_DB_USER: "${DB_USER}"
FR_DB_PASS: "${DB_PW}"
# APACHE_RUN_USER=pi
APACHE_RUN_USER_ID: "${UID}"
# APACHE_RUN_GROUP=pi
APACHE_RUN_GROUP_ID: "${GID}"
depends_on:
- db
links:
- db:db
ports:
- 4080:80
volumes:
- ${PWD}/fr/html:/var/www/html
- ${PWD}/fr/user-files:/user-files
restart: unless-stopped
EOF
選項 | 註解 |
---|---|
container_name: mariadb | 數據庫容器名稱mariadb ,可自定義以示區分。 |
container_name: filerun | FileRun 程式容器名稱filerun ,可自定義以示區分。 |
- ${PWD}/db:/config | 數據庫檔案儲存路徑。/home/$USER/apps/filefrun/db |
- ${PWD}/fr/html:/var/www/html | FileRun 應用程式檔儲存路徑 。/home/$USER/apps/filefrun/fr/html |
- ${PWD}/fr/user-files:/user-files | FileRun 使用者檔案的儲存路徑。/home/$USER/apps/filefrun/fr/user-files |
- "4080:80" | 網頁WEB UI 操作端口: 4080。 |
restart: unless-stopped | 新增容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
filerun /filerun/entrypoint.sh /us ... Up 0.0.0.0:4080->80/tcp,:::4080->80/tcp
mariadb /init Up 3306/tcp
現在可以透過瀏覽器開啟filerun
服務,http://onecloud:4080
FileRun
會隨時建立超級用戶的密碼:
用戶(Your username): | 密碼(Your password): |
---|---|
superuser | 5eba4dffb4d2 |
安裝開源博客WordPress |
WordPress是一個免費的開源博客工具,也是一個基於PHP和MySQL的內容管理系統(CMS),該系統在網路託管服務上運行。功能包括外掛程式架構和範本系統。官方網站: WordPress.com:又快又安全的 WordPress 託管服務
Docker安裝: Wordpress - Official Image | Docker Hub
建立程式的目錄
mkdir -p /home/$USER/apps/wordpress
進入程序目錄
cd /home/$USER/apps/wordpress/
設定環境變量
docker-compose.yml
文件mariaDB
數據庫 和wordpress
容器 共用相同的變量。為了減少重複的輸入及精簡配置,建立.env 變量配置檔案作為docker-compose.yml
文件預設的變量值。
cat >> .env << EOF
# Define FileFun Environment
MYSQL_ROOT_PASSWORD=root_password
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress_password
TZ=Asia/Hong_Kong
PUID=1000
PGID=1000
EOF
選項 | 註解 |
---|---|
MYSQL_ROOT_PASSWORD=root_password | 數據庫root 密碼是root_password ,可自定義以示區分。 |
MYSQL_DATABASE=wordpress_db | 數據庫名稱是wordpress_db ,可自定義以示區分。 |
MYSQL_USER=wordpress | 數據庫新建用戶名稱是wordpress ,可自定義以示區分。 |
MYSQL_PASSWORD=wordpress_password | 數據庫密碼是 wordpress_password ,可自定義 。 |
TZ=Asia/Hong_Kong | 設定+8時區 |
PUID=1000 | 使用者 ID |
PGID=1000 | 使用者群組 ID |
讀取變量參數:
source .env
建立wordpress
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: "3"
services:
db:
image: linuxserver/mariadb:latest
container_name: mariadb
environment:
PUID: "${PUID}"
PGID: "${PGID}"
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
TZ: "${TZ}"
MYSQL_DATABASE: "${MYSQL_DATABASE}"
MYSQL_USER: "${MYSQL_USER}"
MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
volumes:
- ./db:/config
# ports:
# - 3306:3306
restart: unless-stopped
wordpress:
image: wordpress
container_name: wordpress
restart: always
ports:
- 5080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: "${MYSQL_USER}"
WORDPRESS_DB_PASSWORD: "${MYSQL_PASSWORD}"
WORDPRESS_DB_NAME: "${MYSQL_DATABASE}"
volumes:
- ./wp:/var/www/html
depends_on:
- db
restart: unless-stopped
EOF
選項 | 註解 |
---|---|
container_name: mariadb | 數據庫容器名稱mariadb ,可自定義以示區分。 |
container_name: wordpress | wordpress 容器名稱wordpress ,可自定義以示區分。 |
- ./db:/config | 數據庫檔案儲存路徑。/home/$USER/apps/wordpress/db |
- ./wp:/var/www/html | wordpress 應用檔儲存路徑 。/home/$USER/apps/wordpress/wp |
- "5080:80" | 網頁WEB UI 操作端口: 5080。 |
restart: unless-stopped | 新增容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
mariadb /init Up 3306/tcp
wordpress docker-entrypoint.sh apach ... Up 0.0.0.0:5080->80/tcp,:::5080->80/tcp
現在可以透過瀏覽器開啟wordpress
服務,http://onecloud:5080
HomeAssistant + MQTT + MariaDB的組合安裝 |
經過上邊多個程式的部署,如:Kodbox
、FileRun
和WordPress
等等,通過docker-compose
,使用單一YML
文件來配置多個應用程式及聯動(即多個服務)。最後,只需要使用一個指令,就可以建立並啟動所有服務。
這次嘗試
HomeAssistant
+MQTT
+MariaDB
的組合安裝。
HomeAssistant
主程式。MQTT
作為智能裝置代理人角色,如:我的遺產DC1
就需要用到MQTT
接入HomeAssistant
。MariaDB
替換預設的數據庫SQLite
,當數據大量時可以解決打開歷史頁簽響應慢及假死現象。
建立程式的目錄
mkdir -p /home/$USER/apps/hass/{config,db,mqtt} && mkdir -p /home/$USER/apps/hass/mqtt/{config,data,log}
目錄架構:
├── config #Home Assistant
檔案儲存路徑。
├── db # 數據庫檔案儲存路徑。
└── mqtt #mqtt
檔案存放路徑。
├── config #mqtt
配置檔案存放路徑。
├── data #mqtt
配置資料存放路徑。
└── log #mqtt
配置日誌存放路徑。
進入程序目錄
cd /home/$USER/apps/hass/
設定環境變量
將需要的環境變量寫入到.env
的檔案中及存放於docker-compose.yml
檔同一目錄內。
cat >> .env << EOF
# Define FileFun Environment
MYSQL_ROOT_PASSWORD=root_password
MYSQL_DATABASE=homeassistant
MYSQL_USER=homeassistant
MYSQL_PASSWORD=nxH1t2flaZq2n64
TZ=Asia/Hong_Kong
PUID=1000
PGID=1000
EOF
選項 | 註解 |
---|---|
MYSQL_ROOT_PASSWORD=root_password | 數據庫root 密碼是root_password ,可自定義以示區分。 |
MYSQL_DATABASE=homeassistant | 數據庫名稱是homeassistant ,可自定義以示區分。 |
MYSQL_USER=homeassistant | 數據庫新建用戶名稱是homeassistant ,可自定義以示區分。 |
MYSQL_PASSWORD=nxH1t2flaZq2n64 | 數據庫密碼是 nxH1t2flaZq2n64 ,可自定義 。 |
TZ=Asia/Hong_Kong | 設定+8時區 |
PUID=1000 | 使用者 ID |
PGID=1000 | 使用者群組 ID |
讀取變量參數:
source .env
建立Home Assistant
的基礎配置文件configuration.yaml
cat >> /home/$USER/apps/hass/config/configuration.yaml << EOF
default_config:
mqtt:
broker: 127.0.0.1
recorder:
db_url: mysql://homeassistant:[email protected]/homeassistant?charset=utf8
purge_keep_days: 7
EOF
選項 | 註釋 |
---|---|
broker: 127.0.0.1 | MQTT 的IP地址指向本機(127.0.0.1) |
db_url: | 轉用 MariaDB 資料庫為後端 |
purge_keep_days: 7 | 保留歷史的時間為 7 天 |
建立eclipse-mosquitto
的配置文件mosquitto.conf
cat >> /home/$USER/apps/hass/mqtt/config/mosquitto.conf << EOF
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false
EOF
建立hass
的Docker-Compose
YAML
檔
cat >> docker-compose.yml << EOF
version: '3'
services:
db:
image: linuxserver/mariadb
container_name: mariadb
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
MYSQL_DATABASE: "${MYSQL_DATABASE}"
MYSQL_USER: "${MYSQL_USER}"
MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
TZ: "${TZ}"
PUID: "${PUID}"
PGID: "${PGID}"
volumes:
- ./db:/config
network_mode: host
# ports:
# - "3306:3306"
homeassistant:
container_name: hass
image: linuxserver/homeassistant
environment:
TZ: "${TZ}"
PUID: "${PUID}"
PGID: "${PGID}"
volumes:
- ./config:/config
restart: unless-stopped
network_mode: host
# ports:
# - 8123:8123
depends_on:
- db
- mosquitto
mosquitto:
image: eclipse-mosquitto
container_name: mqtt
restart: unless-stopped
network_mode: host
# ports:
# - "1883:1883"
# - "9001:9001"
volumes:
- "./mqtt/config:/mosquitto/config"
- "./mqtt/data:/mosquitto/data"
- "./mqtt/log:/mosquitto/log"
environment:
TZ: "${TZ}"
user: "${PUID}:${PGID}"
EOF
選項 | 註解 |
---|---|
container_name: mariadb | 數據庫容器名稱mariadb ,可自定義以示區分。 |
container_name: hass | Home Assistant 容器名稱hass ,可自定義以示區分。 |
container_name: mqtt | eclipse-mosquitto 容器名稱mqtt ,可自定義以示區分。 |
- ./db:/config | 數據庫檔案儲存路徑。/home/$USER/apps/hass/db |
- ./config:/config | Home Assistant 檔案儲存路徑。/home/$USER/apps/hass/config |
- "./mqtt/config:/mosquitto/config" | eclipse-mosquitto 配置檔案存放路徑。 |
- "./mqtt/data:/mosquitto/data" | eclipse-mosquitto 配置資料存放路徑。 |
- "./mqtt/log:/mosquitto/log" | eclipse-mosquitto 配置日誌存放路徑。 |
network_mode: host | 與容器共用主機網路。因為Home Assistant 需要共用主機網路才可以被某些設備發現。 |
restart: unless-stopped | 新增容器重啟策略。 |
檢驗Docker-Compose
YAML
檔配置
docker-compose config
拉取鏡像,建立和啟動容器
docker-compose up -d
檢查容器的是否成功啟動
docker-compose ps
hass /init Up
mariadb /init Up
mqtt /docker-entrypoint.sh /usr ... Up
現在可以透過瀏覽器開啟Home Assistant
服務,http://onecloud:8123
建立MQTT用戶 (可選)
如果想外網經MQTT
接入到Home Assistant
,基於安全考量還是建議關閉匿名訪問及建立MQTT
用戶。
建立MQTT
用戶
docker-compose exec mosquitto mosquitto_passwd -c /mosquitto/config/mosquitto.passwd user01
用戶名稱 | 密碼 |
---|---|
user01 | 輸入2次 |
修改eclipse-mosquitto
的配置文件
sed -i -e 's/allow_anonymous\ true/allow_anonymous\ false/g' \
-e '$a password_file /mosquitto/config/mosquitto.passwd' \
/home/${USER}/apps/hass/mqtt/config/mosquitto.conf
利用docker-compose
指令使新配置生效
docker-compose restart
Restarting hass ... done
Restarting mariadb ... done
Restarting mqtt ... done
開於DC1經MQTT接入到Home Assistant的詳細配置,可參考以下網址。
Phicomm (斐訊) DC1 智能拖板 接入 Home Assistant
LNMP(Docker + Nginx + MySQL + PHP): |
還有好多WEB
的應用服務在Docker Hub
未能覆蓋或者不技持的CPU
架構情況下,可以透過DNMP
方便快速部署。
詳情可參考大神的LNMP一鍵安裝程序: https://github.com/yeszao/dnmp
結語: |
Docker Hub網站也提供好多熱門軟件的YAML配置,即Docker Compose
部署方式。當運行多個
Docker
容器時docker-compose
是被官方所推薦部署方式。把所需要的
Docker
容器寫入到一個docker-compose.yml
檔案內,最後只要執行docker-compose up -d
指令,就可以把所有的服務執行起來並指定容器間的依存關系。同時還可以使用
docker
save
/load
輸出/輸入映像檔(Image)。有了映像檔和Docker Compose
組合就可以在任何Docker Engine
環境執行進行遷移或者發佈。
參考資料: |
相關連結: |
На сайте https://boostclicks.ru/ вы сможете ознакомиться с рекомендациями, ценными и важными советами про API интеграцию, скрипты, а также любопытные сервисы из мира трафика. Для того чтобы вам было удобней ориентироваться, все материалы поделены на разделы, что позволит отыскать то, что действительно актуально и интересно в данный момент. Регулярно на портале появляется новый, интересный контент на данную тему. Имеется и список тех статей, которые пользуются особой популярностью. Все они созданы лучшими и высококлассными экспертами с огромным опытом.
Ищете интернет магазин автозапчастей в Минске с выгодными ценами? Посетите https://belautoparts.by/ где вы найдете существенный выбор для все автомобилей с доставкой по всей Беларуси. Подберите запчасти по VIN, марке авто, номеру детали, артикулу, каталогу в иллюстрации. У нас также есть все для ТО – расходники, масла, фильтра и многое другое. В нашем интернет магазине более 30 млн запчастей как оригинальных, так и качественных заменителей. Ознакомьтесь на сайте подробнее!
На сайте https://miners-store.ru/ вы сможете связаться с представителями компании для того, чтобы выбрать и приобрести асики для майнинга. Перед вами функциональное и качественное оборудование, которое требуется для того, чтобы добыть криптовалюту. Изучите всех производителей такого оборудования, которое можно заказать по лучшей стоимости. Есть и самые популярные модели, которые приобретают чаще остальных. Здесь также осуществляется продажа видеокарт. Специалисты соберут специальную ферму для майнинга с нуля.
Visit https://reviewspoty.com/ and you can easily collect reviews by integrating with your existing technology and e-commerce platforms. Increase sales and reduce marketing costs with reviews. Learn more about us and what we offer, as well as pricing and a free trial.
Посетите сайт https://4px.ru/ - 4 Пикселя – это Digital агентство интернет-маркетинга полного цикла в Москве, с комплексным подходом к созданию рекламы в интернете. Ознакомьтесь с нашими выгодными услугами в SEO, Яндекс.Директ, SMM, Serm, разработкой и созданием сайтов и многими другими профессиональными услугами. Ознакомьтесь с нашими кейсами – мы будем рады видеть вас в числе наших клиентов!
Etsitko hyodyllista tietoa lainoista? Vieraile osoitteessa https://esimerkkilinkki.fi/ - josta loydat kattavaa tietoa asuntolainasta, vinkkeja lainan hakemiseen, lainojen vertailuun ja paikkaan, kuinka saada laina heti ilman luottotietoja tai luottohistoriaa ja paljon muuta. Hyodyllista tietoa sinulle verkkosivuillamme.
How to exchange BITCOIN in the cryptocurrency exchanger quickex are Buy or sell BTC? In this https://www.youtube.com/watch?v=0MupM-q6I3A detailed guide, we will show you how to buy BTC on the quickex platform in 5 easy steps. You will learn how to use a reliable service without registration and verification, getting access to the best rates from leading liquidity providers.
На сайте https://remont-okon-63.ru/ уточните номер телефона для того, чтобы воспользоваться такой нужной услугой, как ремонт, регулировка окон независимо от сложности. Прямо сейчас вы сможете воспользоваться возможностью вызвать мастера. Для этого следует указать номер телефона, а также имя. Среди основных услуг, которые оказываются в этой компании, выделяют: ремонт балконных дверей, производство москитных сеток, стеклопакетов. Кроме того, доступен и срочный ремонт конструкций. Все работы выполняются в соответствии с требованиями.
Доставка комплексных обедов в Алматы для ваших сотрудников или на дом на сайте https://bvd.kz/ - у нас широкий ассортимент и выбор блюд по отличным ценам! Ознакомьтесь на сайте с составами и ценами на комплексные обеды. Заключаем договоры на доставку обедов в офисы и административные учреждения, доставляем обеды в школы и детские сады, где нет собственной кухни, в магазины и прочие подобные учреждения, у сотрудников которых нет возможности пообедать в столовой. Подробнее на сайте.
Вместе с t.me/azino777_a у вас есть возможность в увлекательное путешествие по миру азартных игр отправиться. Предлагаем уникальные бонусы и персонализированные предложения. Расскажем, как начать играть в Азино. Вас ждет возможность выиграть крупный приз и невероятные эмоции. Испытайте свою удачу уже сейчас! Ищете azino777 com? - тут имеется множество актуальной информации. Собрали самые интересующие вопросы от игроков. Рады вам помочь. Приготовьтесь к завлекательным в Азино турнирам. Участвуйте и с другими игроками боритесь за призы!
На сайте https://ooo-rodnik.ru/ уточните телефон популярной компании «Родник», основной сферой деятельности которой является чистка, ремонт скважин по всей Московский области. Предприятие оказывает услуги в своей сфере уже более 5 лет. Работа происходит без выходных, пенсионеры смогут рассчитывать на приятные скидки, бонусы. На все работы дается гарантия в один год. Компания занимается обслуживанием дач, коттеджей, домов, производств, поселков городского типа. Со всеми направлениями деятельности ознакомьтесь на сайте.
Судоходная компания Навигатор https://teplohod-restoran.ru/ это возможность организовать праздник на воде в Санкт-Петербурге. Свадьбы, дни рождения, корпоративы, выпускные, а также банкеты и фуршеты. Мы комплексно подходим к организации любого события. Посетите сайт, посмотрите наш флот и стоимость аренды судов, яхт, катеров, теплоходов.
Ищете оборудование из Китая по ценам производителя? Посетите сайт https://totem28.ru/ где вы найдете широкий ассортимент не только оборудования, но и спец техники. Наш каталог постоянно пополняется, мы тщательно отбираем новинки китайского машиностроения. Посмотрите наш каталог и узнайте подробнее на сайте.
Looking for flower delivery in Ukraine? Visit https://ukraineflora.com/ where you will find the largest selection of fresh flowers and exclusive gifts. Look through the catalog and you will definitely find not only luxurious flowers and bouquets, but also gift baskets, perfumes, balloons and even cakes.
Компания «КАРДЕКС» https://card-oil.ru/ — надежный партнер на рынке топливных решений, работающий более 12 лет. Специализируется на выпуске и обслуживании топливных карт для юридических лиц и индивидуальных предпринимателей. Преимущество КАРДЕКС — доступ к обширной сети из более чем 13000+ АЗС по всей России, включая федеральные и региональные заправочные станции. Это позволяет клиентам заправляться без привязки к конкретному бренду, оптимизируя расходы и логистику. Топливные карты КАРДЕКС обеспечивают удобный контроль затрат, предоставляют детальную аналитику и помогают экономить за счет персонализированных условий и скидок. Компания зарекомендовала себя как стабильный и технологичный игрок, предлагающий инновационные решения для бизнеса.
Спецкор Дніпро: Новини міста Дніпра і Дніпропетровської області - https://spetskor.dp.ua/ . Актуальні новини Дніпра і Дніпропетровської області. Довідкова, та корисна інформація про місто.
Ищете топливные карты для юридических лиц и ИП? Обратите внимание на единую топливную карта ЛИОТЭК для бизнеса. Узнайте на сайте https://liotec.ru/ все преимущества выгодной карты Лиотек и какие огромные преимущества она дает, по сравнению с другими картами. Подробнее на сайте.
ноутбук какой лучше
що подарувати дівчинці на 12 років на день народження
подарунок дівчинці на 10 років
https://orgnaztech.mirtesen.ru/blog/43202871346/Gde-Kazhdyiy-Gost-Osobennyiy-Otel-Glory
лазерная резка металла
купить бассейн в землю
Создание QR кодов
автоматизация бизнес-процессов
Лучший генератор QR-кодов
https://orgnaztech.mirtesen.ru/blog/43202871346/Gde-Kazhdyiy-Gost-Osobennyiy-Otel-Glory
https://vkorzinu.com.ua/literatura-ta-istorija/zastosuvannja-ultrazvuku.html
https://vkorzinu.com.ua/literatura-ta-istorija/lesja-ukrainka-mrii-analiz-3.html
https://vkorzinu.com.ua/literatura-ta-istorija/pisni-pro-rolanda-obraz-ganelona.html
https://vkorzinu.com.ua/literatura-ta-istorija/1984-dzhordzh-orvell-analiz.html
що таке біде
https://vkorzinu.com.ua/
дерев яні панелі в інтер єрі
https://budexpert.site/
https://remdiz.com.ua/jak-pravilno-koristuvatisja-melaminovoju-gubkoju/https://remdiz.com.ua/italijskij-stil-v-inter-eri-osoblivosti-kolir/https://remdiz.com.ua/jak-vitjagnuti-zlamanij-kljuch-iz-zamka-dverej/https://remdiz.com.ua/chervoni-shtori-v-inter-eri-vidi-tkanini-dizajn/https://remdiz.com.ua/shpaleri-v-stili-provans-60-zatishnih-variantiv/