NEXTCLOUD
Instalación de nextcloud mediante docker
INICIO
Instalación
La instalación consta de 4 servicios:
- db: Base de datos mariadb
- redes: Base de datos de memoria caché redis
- app: Aplicativo nextcloud
- web: Servidor web nginx
El primer paso es generar nuestro docker-compose:
services:
db:
image: mariadb:10.11
container_name: nextcloud-db
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- database:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: Ko5b0sq977j1saaCQ3SD55
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Ko5b0sq977j1saaCQ3SD55
redis:
image: redis:alpine
container_name: nextcloud-redis
restart: unless-stopped
volumes:
- redis:/data
app:
image: nextcloud:fpm
container_name: nextcloud-app
restart: unless-stopped
ports:
- 9000:9000
depends_on:
- db
- redis
volumes:
- data:/var/www/html
- user:/var/nextcloud/data
- /datos/dFa:/mnt
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Ko5b0sq977j1saaCQ3SD55
REDIS_HOST: redis
PHP_UPLOAD_LIMIT: 0
web:
image: nginx
container_name: nextcloud-web
restart: always
ports:
- 8080:80
depends_on:
- app
volumes:
- nginx_conf:/etc/nginx
- data:/var/www/html
volumes_from:
- app
volumes:
data:
driver: local
database:
driver: local
redis:
driver: local
nginx_conf:
driver: local
user:
driver: local
db:
image: mariadb:10.11
container_name: nextcloud-db
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- database:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: Ko5b0sq977j1saaCQ3SD55
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Ko5b0sq977j1saaCQ3SD55
redis:
image: redis:alpine
container_name: nextcloud-redis
restart: unless-stopped
volumes:
- redis:/data
app:
image: nextcloud:fpm
container_name: nextcloud-app
restart: unless-stopped
ports:
- 9000:9000
depends_on:
- db
- redis
volumes:
- data:/var/www/html
- user:/var/nextcloud/data
- /datos/dFa:/mnt
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: Ko5b0sq977j1saaCQ3SD55
REDIS_HOST: redis
PHP_UPLOAD_LIMIT: 0
web:
image: nginx
container_name: nextcloud-web
restart: always
ports:
- 8080:80
depends_on:
- app
volumes:
- nginx_conf:/etc/nginx
- data:/var/www/html
volumes_from:
- app
volumes:
data:
driver: local
database:
driver: local
redis:
driver: local
nginx_conf:
driver: local
user:
driver: local
Los volúmenes se han configurado por las siguientes razones:
- database: Ficheros de la base de datos mysql
- redis: Ficheros de la base de datos redes
- data: Ficheros del aplicativo nextcloud (es necesario que lo usen tanto el contenedor app como el contenedor web)
- user: Ficheros de los perfiles de usuarios creados para nextcloud
- nginx_conf: Fichero nginx.conf
Además, en este caso, se ha realizado un bind de nuestro disco /datos para que sea utilizado como punto de montaje en nextcloud. Dado que es un contenedor, es necesario mapearlo para que la interfaz web tenga acceso al recurso de alguna manera.
Desplegamos los contenedores: