2017-09-14 4 views
0

Je suis nouveau sur OpenShift, je déploie mon application flask sur ce dernier, mais j'ai rencontré un problème. Le nom de mon application/conteneur est flog.lors du chargement des bibliothèques partagées lors de l'exécution du pod de préhook

J'ai mis en place un pré-cycle de cycle de vie pour m'assurer que la base de données est créée correctement pour le déploiement de l'application. Voici ma config (partie critique):

spec: 
    replicas: 1 
    selector: 
    deploymentconfig: flog 
    strategy: 
    activeDeadlineSeconds: 21600 
    resources: {} 
    rollingParams: 
     intervalSeconds: 1 
     maxSurge: 25% 
     maxUnavailable: 25% 
     pre: 
     execNewPod: 
      command: 
      - flask 
      - init 
      containerName: flog 
      env: 
      - name: FLASK_APP 
       value: wsgi.py 
     failurePolicy: Abort 
     timeoutSeconds: 600 
     updatePeriodSeconds: 1 
    type: Rolling 

Il fonctionne correctement dans la construction, mais les pauses dans prehook

--> pre: Running hook pod ... 
/opt/app-root/bin/python3: error while loading shared libraries: libpython3.5m.so.rh-python35-1.0: cannot open shared object file: No such file or directory 

Cependant, quand je debug dans le terminal et taper la commande python3, il fonctionne bien.

Merci à l'avance pour toute aide.

Répondre

0

Vous aurez besoin d'ajouter un script shell dans votre image qui, à son tour, exécutera votre commande. L'encapsuleur de script shell est nécessaire car l'initialisation de l'environnement shell a pour effet secondaire d'activer l'environnement Python, y compris la définition de variables d'environnement pour qu'il puisse trouver la bibliothèque partagée Python.

changer donc:

 command: 
     - flask 
     - init 

à:

 command: 
     - somescript 

Et somescript ont:

#!/bin/bash 
flask init 
+0

Cela fonctionne, merci pour la réponse –