2017-05-16 20 views
1

in gitlab.yml wiederherstellen habe ichGitlab ci: mysql build und db-Dump

mysql_build: 
    stage: build 
    variables: 
    MYSQL_DATABASE: rates 
    MYSQL_ROOT_PASSWORD: root 
    services: 
    - mysql:latest 
    image: mysql 
    before_script: 
    - mysql --version 
    script: 
    - echo "SELECT 'OK';" | mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" --host=mysql "${MYSQL_DATABASE}" 
    - mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" rates < db/rates_db.sql 

es ist mysql erfolgreich installieren, aber ich möchte für den Zugriff auf sie in der nächsten Stufe SQL-Dump-Datei wiederherzustellen.

wenn dieser Teil begonnen, ich habe Ausnahme:

- mysql --user=root --password="${MYSQL_ROOT_PASSWORD}" rates < db/rates_db.sql 

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

Real Application befindet sich hier

https://gitlab.com/armdev/exchange-rates

Wie kann ich db in mysql wieder herstellen?

+0

Der MySQL-Dienst läuft und ist erreichbar mit dem Hostnamen 'mysql'. Könnten Sie es mit etwas wie diesem versuchen: 'mysql --user = root --password =" $ {MYSQL_ROOT_PASSWORD} "--host = mysql raten Jawad

+0

Übrigens hatten Sie es richtig im ersten mysql-Befehl also ich denke, Sie haben nur vergessen, es in – Jawad

+0

hinzufügen Ja, danke, es funktioniert :) mysql build ist ok. Wie sollte ich den Zugriff auf mysql von jdbc ändern: mysql: // localhost: 3306/raten? zu jdbc: mysql: // mysql: 3306/Raten? –

Antwort

2

Initialisierung eine neue Instanz

Wenn ein Behälter zum ersten Mal gestartet wird, wird eine neue Datenbank mit dem angegebenen Namen erstellt und mit dem bereitgestellten Konfigurationsvariablen initialisiert werden. Außerdem werden Dateien mit den Erweiterungen .sh, .sql und .sql.gz ausgeführt, die sich in /docker-entrypoint-initdb.d befinden. Dateien werden in alphabetischer Reihenfolge ausgeführt. Sie können Ihre mysql-Dienste problemlos füllen, indem Sie einen SQL-Speicherauszug in diesem Verzeichnis bereitstellen und benutzerdefinierte Images mit bereitgestellten Daten bereitstellen. SQL-Dateien werden standardmäßig in die von der Variablen MYSQL_DATABASE angegebene Datenbank importiert.

diese

Dockerfile

FROM mysql 

ENV MYSQL_DATABASE rates 
ENV MYSQL_ROOT_PASSWORD root 

COPY db/rates_db.sql /docker-entrypoint-initdb.d/ 

Ersetzen in Gitlab-ci.yml Versuchen in einem Docker Behälter

mysql_build: 
    stage: build 
    script: 
    - docker build . -t <Image name> 
+0

Danke für Hilfe und eine Frage, wie ich auf die Datenbank zugreifen soll? Jetzt benutze ich jdbc: mysql: // localhost: 3306/raten, sollte ich docker port wie jdbc verwenden: mysql: //192.168.99.104: 3306/raten? –

+0

Wenn Sie den Container und die Java-Anwendung auf demselben Server ausführen, müssen Sie jdbc: mysql: //172.17.0.1: 3306/rates ausführen. Aber wenn nicht, müssen Sie die IP des Servers hinzufügen und überprüfen, ob der Container die IP auflöst. – German