GithubHelp home page GithubHelp logo

Comments (7)

alaub81 avatar alaub81 commented on July 25, 2024

Hello @Bleala,

i have an idea. Could you please provide me some more informations on your used mariadb docker Container?

It Looks like an Environment variable is set in an other way here. There is a path in the filename… /secrets….

from backup_docker_scripts.

Bleala avatar Bleala commented on July 25, 2024

@alaub81
Ich werd mal in Deutsch weiterschreiben, da du laut deinem Github Profil ja Deutscher zu sein scheinst :)

Das wär der MariaDB Part in meinen Compose Files (ist immer exakt 1:1 das selbe):
(SECRETSDIR Variable wird per .env Datei gesetzt)

version: "3.9"

networks:                                 
  traefik_proxy:                       
    external:
      name: traefik_proxy
  gitea:
    internal: true
  default:
    driver: bridge

volumes:
  mariadb:
    name: mariadb_gitea
    driver: local

secrets:
  mariadb_database:
    file: $SECRETSDIR/mariadb_database
  mariadb_password:
    file: $SECRETSDIR/mariadb_password
  mariadb_root_password:
    file: $SECRETSDIR/mariadb_root_password
  mariadb_user:
    file: $SECRETSDIR/mariadb_user

services:
  mariadb:
    container_name: mariadb_gitea
    image: mariadb:10.6
    restart: always
    security_opt:
      - no-new-privileges:true
    networks:
      - gitea
    environment:
      - MARIADB_DATABASE_FILE=/run/secrets/mariadb_database
      - MARIADB_PASSWORD_FILE=/run/secrets/mariadb_password
      - MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mariadb_root_password
      - MARIADB_USER_FILE=/run/secrets/mariadb_user
    volumes:
      - type: bind
        source: $DOCKERDIR/mariadb/my.cnf
        target: /etc/mysql/conf.d/my.cnf
        read_only: true
      - type: volume
        source: mariadb
        target: /var/lib/mysql
        read_only: false
    secrets:
      - mariadb_database
      - mariadb_password
      - mariadb_root_password
      - mariadb_user

deshalb noch komischer, da die Fehlermeldung nur bei zwei Container auftritt, bei den anderen 8 nicht, da läuft es ohne Probleme durch.
Wobei nachdem die .sql.gz Dateien nur 1KB haben und wenn man sie extrahiert nichts drinnen ist, ist dann doch auch wo ein Problem^^

from backup_docker_scripts.

alaub81 avatar alaub81 commented on July 25, 2024

Wie hast du denn im BackupScript die Container konfiguriert? Also was steht hinter CONTAINER= ?
Er scheint deinen Datenbank Namen nicht aus den Environments lesen zu können, sicher wegen der secret files. Was passiert wenn du im DB Container env eingibst. was spuckt der hier hinter MYSQL_DATABASE aus?

from backup_docker_scripts.

Bleala avatar Bleala commented on July 25, 2024

Hinter Container steht folgendes: $(docker ps --format '{{.Names}}:{{.Image}}' | grep 'mysql\|mariadb' | cut -d":" -f1) , hab das genommen, wo dabei steht, dass alle MariaDB Container gebackupt werden.

Bei env bekomme ich folgendes raus: MYSQL_DATABASE_FILE=/run/secrets/mariadb_database

Habs auch bei einem Container getestet wo das Backup scheinbar durchläuft, da bekomm ich genau das selbe mit env, aber im Script keine Fehlermeldung.

Sind deswegen auch die Backups nur 1KB groß und ohne Inhalt?

from backup_docker_scripts.

alaub81 avatar alaub81 commented on July 25, 2024

Gibt es da auch einfach nur MYSQL_DATABASE=? Wenn nein, dann funktioniert das Script den den Secret Files nicht. Müsste ich mal nachstellen um hier eine Lösung zu finden.

Das Problem kommt auf jedenfalls hier her:
MYSQL_DATABASE=$(docker exec $i env | grep MYSQL_DATABASE |cut -d"=" -f2)
hier sollte er den Datenbank Namen auslesen, den es sichern und vor allem auch im BackupNamen verwenden soll.

Falls es den anderen Wert auch gibt, ist es denke ich damit getan es so zu fixen:
MYSQL_DATABASE=$(docker exec $i env | grep "MYSQL_DATABASE=" |cut -d"=" -f2)

from backup_docker_scripts.

Bleala avatar Bleala commented on July 25, 2024

Nein den Wert MYSQL_DATABASE= gibt es in der Form nicht, sind alle immer nur in dem Format: MYSQL_DATABASE_FILE=/run/secrets/mariadb_database.

MYSQL_DATABASE=$(docker exec $i env | grep "MYSQL_DATABASE=" |cut -d"=" -f2) funktioniert leider auch nicht, auch nicht wenn ich den Wert auf "MYSQL_DATABASE_FILE=" ändere.
Dürfte ziemlich sicher aber an den Secrets liegen, habe das Kommando mal auf mysqldump --all-databases umgebaut und da bekommt man dann auch immer die Fehlermeldung Access denied for user 'root'@'localhost' (using password: NO), also kann er auch das Passwort nicht auslesen.

Denke für Docker Secrets gibt es hier keine direkte Lösung oder?

from backup_docker_scripts.

alaub81 avatar alaub81 commented on July 25, 2024

Ich habe mal ein wenig geschaut. ich denke mit den Script von mir kommst du definitiv nicht weiter. Docker Secrets gehen hier nicht. Er braucht User und Passwort zum anmelden an die Datenbank. Und die kann er scheinbar nicht auslesen.
Aber ich werde mir das in einer ruhigen minute einmal genauer anschauen. Du kannst auf jeden Fall die Datenbanken mit Docker Secrets einfach exkludieren.

from backup_docker_scripts.

Related Issues (6)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.