Настройка и проблема

У меня есть файл docker-compose, который я запустил на своем сервере. Поработав с ним некоторое время, я хотел, чтобы он был доступен под вторым доменным именем, поэтому я перезапустил его с помощью следующих команд:

docker-compose stop
docker-compose rm # answering yes in the process
docker-compose up -d --force-recreate

Казалось, что базовое изображение owncloud было обновлено тем временем, потому что я обнаружил неудачное обновление, упомянутое в журналах owncloud (см. Конец публикации). В журнале предлагается сделать occ app:disable richdocuments чтобы отключить плагин, который не позволяет обновлению установки. Когда я сейчас пытаюсь отключить приложение:

docker-compose run --rm -u www-data owncloud php occ app:disable richdocuments
# yields: Command "app:disable" is not defined.
# Look whats possible then
docker-compose run --rm -u www-data owncloud php occ list --raw
# yields: check, help, list, status, app:check-code, maintenance:install and some integrity checks
# What is the status then?
docker-compose run --rm -u www-data owncloud php occ status
# yields:
# ownCloud is not installed - only a limited number of commands are available
# Failed to connect to the database: An exception occured in driver: SQLSTATE[HY000] [14] unable to open database file

Похоже, что owncloud occ tool не полностью доступен. Кроме того, подключение к базе данных, кажется, не удается.

Вопросы

  1. Как я могу получить доступ к инструменту occ с помощью этой установки owncloud ?
  2. Почему не удается подключиться к базе данных?

Рекомендации

docker-compose.yml:

version: '2.1'
# Following
# https://owncloud.org/news/docker-owncloud-traefik-reverse-proxy-lets-encrypt-ssl/
volumes:
  files:
    driver: local
  mysql:
    driver: local
  backup:
    driver: local
  redis:
    driver: local
services:
  owncloud:
    image: owncloud/server:10.0
    restart: unless-stopped
    depends_on:
      - db
      - redis
    environment:
      - OWNCLOUD_DOMAIN=owncloud.mydomain.de
      - OWNCLOUD_DB_TYPE=mysql
      - OWNCLOUD_DB_NAME=owncloud
      - OWNCLOUD_DB_USERNAME=owncloud
      - OWNCLOUD_DB_PASSWORD=owncloud
      - OWNCLOUD_DB_HOST=db
      - OWNCLOUD_ADMIN_USERNAME=owncloud_admin
      - OWNCLOUD_ADMIN_PASSWORD=password
      - OWNCLOUD_UTF8MB4_ENABLED=true
      - OWNCLOUD_REDIS_ENABLED=true
      - OWNCLOUD_REDIS_HOST=redis
    networks:
      - web
      - internal
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:owncloud.mydomain.de, owncloud.myotherdomain.de
      - traefik.port=80
      - traefik.docker.network=web
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - files:/mnt/data
  db:
    image: webhippie/mariadb:latest
    restart: unless-stopped
    environment:
      - MARIADB_ROOT_PASSWORD=owncloud
      - MARIADB_USERNAME=owncloud
      - MARIADB_PASSWORD=owncloud
      - MARIADB_DATABASE=owncloud
      - MARIADB_MAX_ALLOWED_PACKET=128M
      - MARIADB_INNODB_LOG_FILE_SIZE=64M
      - MARIADB_INNODB_LARGE_PREFIX=ON
      - MARIADB_INNODB_FILE_FORMAT=Barracuda
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - mysql:/var/lib/mysql
      - backup:/var/lib/backup
    networks:
      - internal
  redis:
    image: webhippie/redis:latest
    restart: unless-stopped
    environment:
      - REDIS_DATABASES=1
    healthcheck:
      test: ["CMD", "/usr/bin/healthcheck"]
      interval: 30s
      timeout: 10s
      retries: 5
    volumes:
      - redis:/var/lib/redis
    networks:
      - internal
  # see https://help.nextcloud.com/t/collabora-configuration-with-docker-compose/3970
  office:
    image: collabora/code
    container_name: office
    restart: unless-stopped
    ports:
            - 9980:9980
    cap_add:
      - MKNOD
    environment:
      - DOMAIN=office.mydomain.de
      - dictionaries="de en"
    labels:
      - traefik.enable=true
      - traefik.frontend.rule=Host:office.mydomain.de
      - traefik.port=9980
      - traefik.docker.network=web
    networks:
      - web
      - internal
networks:
  web:
    external: true
  internal:

Журналы Owncloud:

Copying db file...
Copying utf8mb4 config...
Fixing hook perms...
Fixing base perms...
Fixing data perms...
Upgrading server database...
ownCloud or one of the apps require upgrade - only a limited number of commands are available
You may use your browser or the occ upgrade command to do the upgrade
Set log level to debug
Repair step: Repair MySQL database engine
Repair step: Repair MySQL collation
Repair info: All tables already have the correct collation -> nothing to do
Repair step: Repair SQLite autoincrement
Repair step: Repair orphaned reshare
Repair step: Repair duplicate entries in oc_lucene_status
Repair info: lucene_status table does not exist -> nothing to do
Repair step: Upgrade app code from the marketplace
Repair warning: You have incompatible or missing apps enabled that could not be found or updated via the marketplace.
Repair warning: Please install or update the following apps manually or disable them with: occ app:disable richdocuments
Repair warning: For manually updating, see https://doc.owncloud.org/server/10.0/go.php?to=admin-marketplace-apps
OC\RepairException: Upgrade is not possible
Update failed

Обновить

Для удобства чтения и изменения базы данных я добавил phpmyadmin в настройку:

db_admin:
  image: phpmyadmin/phpmyadmin
  restart: unless-stopped
  depends_on:
    - db
  links:
    - db
  networks:
    - web
    - internal
  environment:
    - MYSQL_USERNAME=owncloud_username
    - MYSQL_ROOT_PASSWORD=owncloud_root_password
  labels:
    traefik.enable: true
    traefik.frontend.rule: "Host:managedb.mydomain.de"
    traefik.port: 80
    traefik.docker.network: web
    traefik.frontend.auth.basic: "username:hashed_password_string"
    traefik.frontend.entryPoints: "https"
    traefik.frontend.passHostHeader: true
    traefik.backend.loadbalancer.stickiness: true

В базе данных я нигде не могу найти richdocuments особенно в таблице oc_appconfig .

1 ответ1

1

столкнулся с аналогичной проблемой

выглядит как ошибка собственного облака

Я использовал костыль:

изменить docker-compose.yml

db:
image: webhippie/mariadb:latest
restart: always
ports:           <-- ADD THIS   
  - 3306:3306    <-- ADD THIS

затем

docker-compose up

теперь можно получить доступ к mariadb через внешний клиент

login: owncloud
 password: owncloud

изменить таблицу oc_appconfig изменить строку

richdocuments   enabled --> disabled    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .