1. 使用docker為nexcloud創(chuàng)建容器網(wǎng)絡
docker network create nextcloud
2. 新建docker-compose.yml,并寫入以下內(nèi)容。在任意目錄即可。
version: '2'
services:
db:
container_name: cloud_db
image: mysql:5.7
volumes:
- "./data/cloud/mysql:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: mysql_root_pwd #mysql root用戶密碼,nextcloud后續(xù)初始化需要使用。
MYSQL_DATABASE: nextcloud #專為nextcloud新建的數(shù)據(jù)庫,nextcloud后續(xù)初始化需要使用。
app:
container_name: cloud_app
depends_on:
- db
image: nextcloud
volumes:
- ./data/cloud/config:/var/www/html/config
- ./data/cloud/data:/var/www/html/data
- ./data/cloud/apps:/var/www/html/apps
links:
- db
ports:
- "80:80" # 前一個80是宿主機也就是阿里云主機對外的端口號,需注意阿里云主機安全組規(guī)則是否開放了這個端口。
restart: always
cron:
container_name: cloud_cron
image: nextcloud
links:
- db
volumes_from:
- app
user: www-data
entrypoint: |
bash -c 'bash -s <<EOF
trap "break;exit" SIGHUP SIGINT SIGTERM
while /bin/true; do
/usr/local/bin/php /var/www/html/cron.php
sleep 900
done
EOF'
restart: always
networks:
default:
external:
name: nextcloud
3. 保存docker-compose.yml,在同路徑下啟動docker-compose
docker-compose up -d
4. 如果期間出錯,重新安裝步驟
#由于執(zhí)行docker-compose.yml已安裝mysql和nextcloud鏡像,先停止并刪除相關容器
docker stop cloud_cron cloud_app cloud_db
docker rm cloud_cron cloud_app cloud_db
#進入掛載目錄刪除相關掛載文件 在同個路徑
rm -rf data
#查看未被引用的容器卷
docker volume ls --filter dangling=true
#刪除nextcloud的容器卷容器卷(這邊注意要刪除nextcloud相關不要誤刪)
docker volume rm 容器卷id
#或者直接
docker volume rm $(docker volume ls -qf dangling=true)
#重新啟動容器
docker-compose up -d
5. 登錄nextcloud并注冊管理員帳號
瀏覽器打開http://阿里云主機的公網(wǎng)ip:80

image.png