Разликата спрямо предната статия е, че ще създадем наш docker-compose файл. След това ще генерираме наш имидж където ще сме заложили наши условия.
CPU - 2 ядра и повече RAM - 2 GB и повече HDD - 20 GB за инсталация + 100 GB за данни
apt update && apt upgrade -y apt install docker.io docker-compose -y
Конфигурацията: • Отваря портове 8080, което позволява HTTP връзки. • Използва отделни контейнери за MariaDB и Redis . • Монтира директориите с данни и MySQL данни на хоста за постоянно съхранение. Следните инструкции предполагат, че инсталирате локално. За отдалечен достъп стойностите на OWNCLOUD_DOMAIN и OWNCLOUD_TRUSTED_DOMAINS трябва да бъдат актуализирани, за да представляват името(имената) на хоста и/или IP адресите, на които сървърът е достъпен. Създаваме директория за проекта.
mkdir owncloud-docker-server cd owncloud-docker-server
Създаваме docler-compose файл.
nano docker-compose.yml version: "3" volumes: files: driver: local mysql: driver: local redis: driver: local services: owncloud: image: owncloud/server:${OWNCLOUD_VERSION} container_name: owncloud_server restart: always ports: - ${HTTP_PORT}:8080 depends_on: - mariadb - redis environment: - OWNCLOUD_DOMAIN=${OWNCLOUD_DOMAIN} - OWNCLOUD_TRUSTED_DOMAINS=${OWNCLOUD_TRUSTED_DOMAINS} - OWNCLOUD_DB_TYPE=mysql - OWNCLOUD_DB_NAME=owncloud - OWNCLOUD_DB_USERNAME=owncloud - OWNCLOUD_DB_PASSWORD=owncloud - OWNCLOUD_DB_HOST=mariadb - OWNCLOUD_ADMIN_USERNAME=${ADMIN_USERNAME} - OWNCLOUD_ADMIN_PASSWORD=${ADMIN_PASSWORD} - OWNCLOUD_MYSQL_UTF8MB4=true - OWNCLOUD_REDIS_ENABLED=true - OWNCLOUD_REDIS_HOST=redis healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: - files:/mnt/data mariadb: image: mariadb:10.11 # minimum required ownCloud version is 10.9 container_name: owncloud_mariadb restart: always environment: - MYSQL_ROOT_PASSWORD=owncloud - MYSQL_USER=owncloud - MYSQL_PASSWORD=owncloud - MYSQL_DATABASE=owncloud - MARIADB_AUTO_UPGRADE=1 command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"] healthcheck: test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"] interval: 10s timeout: 5s retries: 5 volumes: - mysql:/var/lib/mysql redis: image: redis:6 container_name: owncloud_redis restart: always command: ["--databases", "1"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 volumes: - redis:/data
Създаваме конфигурационен файл за настройките на конфигурацията.
cat << EOF > .env OWNCLOUD_VERSION=10.16 OWNCLOUD_DOMAIN=localhost:8080 OWNCLOUD_TRUSTED_DOMAINS=localhost ADMIN_USERNAME=admin ADMIN_PASSWORD=admin HTTP_PORT=8080 EOF
Вътре променете следното: OWNCLOUD_VERSION - Версията на ownCloud, примерно latest OWNCLOUD_DOMAIN - Домейнът ownCloud, примерно localhost:8080 OWNCLOUD_TRUSTED_DOMAINS - Доверените домейни на ownCloud примерно localhost ADMIN_USERNAME - Потребителско име на администратора, примерно admin ADMIN_PASSWORD - Паролата на администраторския потребител, примерно admin HTTP_PORT - HTTP портът, към който да се свърже, примерно 8080 Важно !!!. ADMIN_USERNAME и ADMIN_PASSWORD няма да се променя между разполаганията, дори ако промените стойностите във .env файла. За да ги промените, ще трябва да направите docker volume prune, което ще изтрие всичките ви данни. Вече може да се изгради и стартира контейнера.
docker compose up -d
Когато процесът приключи, проверяваме дали всички контейнери са стартирани успешно, чрез командата docker compose ps. Ако всички работят правилно, би трябвало да видите резултат, подобен на показания по-долу:
docker compose ps WARN[0000] /root/owncloud-docker-server/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS owncloud_mariadb mariadb:10.11 "docker-entrypoint.s…" mariadb About a minute ago Up About a minute (healthy) 3306/tcp owncloud_redis redis:6 "docker-entrypoint.s…" redis About a minute ago Up About a minute (healthy) 6379/tcp owncloud_server owncloud/server:10.16 "/usr/bin/entrypoint…" owncloud About a minute ago Up About a minute (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
В него можете да видите, че базата данни, контейнерите ownCloud и Redis работят и че ownCloud е достъпен през порт 8080 на хост машината. Важно !!! Всички файлове, съхранявани в тази конфигурация, се съдържат в томове на Docker, а не във физическо дърво на файловата система. Отговорност на администратора е да направи файловете постоянни. Ако се пробваме да достъпим ownCloud на адрес: http://192.168.11.86:8080/, ще върне отговор, че се опитваме да достъпим ownCloud от непознат домейн. Да поправим грешката.
nano .env OWNCLOUD_VERSION=10.16 OWNCLOUD_DOMAIN=localhost:8080 OWNCLOUD_TRUSTED_DOMAINS=localhost,192.168.11.86 ADMIN_USERNAME=admin ADMIN_PASSWORD=admin HTTP_PORT=8080
Рестартираме контейнера.
docker compose stop docker compose up -d
Предлага да се логнем в ownCloud. Ползваме име admin и парола admin.
Както в предната статия тук пак можеше да има проблем след рестарт на хоста. Контейнера нямаше да се вдигне автоматично, но в docker-compose.yml има специални редове за тази цел.
nano docker-compose.yml version: "3" volumes: files: driver: local mysql: driver: local redis: driver: local services: owncloud: image: owncloud/server:${OWNCLOUD_VERSION} container_name: owncloud_server restart: always ports: - ${HTTP_PORT}:8080 depends_on: - mariadb - redis environment: - OWNCLOUD_DOMAIN=${OWNCLOUD_DOMAIN} - OWNCLOUD_TRUSTED_DOMAINS=${OWNCLOUD_TRUSTED_DOMAINS} - OWNCLOUD_DB_TYPE=mysql - OWNCLOUD_DB_NAME=owncloud - OWNCLOUD_DB_USERNAME=owncloud - OWNCLOUD_DB_PASSWORD=owncloud - OWNCLOUD_DB_HOST=mariadb - OWNCLOUD_ADMIN_USERNAME=${ADMIN_USERNAME} - OWNCLOUD_ADMIN_PASSWORD=${ADMIN_PASSWORD} - OWNCLOUD_MYSQL_UTF8MB4=true - OWNCLOUD_REDIS_ENABLED=true - OWNCLOUD_REDIS_HOST=redis healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: - files:/mnt/data mariadb: image: mariadb:10.11 # minimum required ownCloud version is 10.9 container_name: owncloud_mariadb restart: always environment: - MYSQL_ROOT_PASSWORD=owncloud - MYSQL_USER=owncloud - MYSQL_PASSWORD=owncloud - MYSQL_DATABASE=owncloud - MARIADB_AUTO_UPGRADE=1 command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"] healthcheck: test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"] interval: 10s timeout: 5s retries: 5 volumes: - mysql:/var/lib/mysql redis: image: redis:6 container_name: owncloud_redis restart: always command: ["--databases", "1"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 volumes: - redis:/data