2017-09-19 2 views
0

Ich habe eine node.js App auf openshift ausgeführt und möchte ein Speichervolumen hinzufügen.Openshift 3 fehlende Umgebungsvariable OPENSHIFT_DATA_DIR (node.js)

Unter Verwendung der einzigen Benutzeroberfläche habe ich bereits einen persistenten Volumenanspruch erstellt und dieses Volumen in meiner Bereitstellung mit der Schaltfläche "Speicher hinzufügen" hinzugefügt.

Da meine Anwendung auf den Zugriff auf diese Speicher beruht, ich habe folgende in meinem node.js Code:

if (!('OPENSHIFT_DATA_DIR' in process.env)) { 
    console.log(process.env); 
    throw new Error('Can\'t access data directory'); 
} 

Dieser Fehler beim Entfalten geworfen wird, und auf die Ausgabe von console.log(process.env) Überprüfung tut es nicht scheint irgendeine Umgebungsvariable zu sein, die einen Pfad für persistenten Speicher beschreibt.

Wie kann ich einen Wert für process.env.OPENSHIFT_DATA_DIR bekommen?

Antwort

1

Sie können sich in der Deployment-Konfiguration die Umgebungsvariable selbst festlegen, indem Sie den Pfad angeben, den Sie dem persistenten Volume in Ihren Container eingehängt haben. Oder kodieren Sie einfach den Pfad in Ihren Anwendungscode.

Dies setzt voraus, dass Sie das persistente Volumen tatsächlich in Ihren Container geladen haben. Es ist nicht genug, nur einen Anspruch zu erheben, es muss dann mit der Anwendung verknüpft werden.

Beachten Sie auch, dass der aktuelle Speichertyp bei Verwendung von OpenShift Online nur mit nicht skalierten Anwendungen verwendet werden kann und Sie keine rollenden Bereitstellungen verwenden können. Stellen Sie daher sicher, dass Sie die Bereitstellungsstrategie der Bereitstellung von Rolling in Recreate ändern und Ihre Anwendung nicht skalieren.

+0

Zum manuellen Hinzufügen der Variablen, wie berechne ich den Pfadnamen des persistenten Volumes? Mein Container listet zwei Informationen auf der Benutzeroberfläche auf, die nützlich sein können. Ich sehe 'Mount: volume-vaymu ->/appstate' und' Claim name: appstorage'. –

+0

Sie haben das persistente Volume bei ''/appstate'' gemountet. Also starte '' oc set env dc/yourappname OPENSHIFT_DATA_DIR =/appstate''. –