2017-06-19 3 views
1

Je suis nouveau à Nix et essaye d'implémenter un service qui passe des services Web de Python Flask si Nginx proxy_pass. C'est ce que j'ai essayé jusqu'à présent.NixOps - Configurez le passage de proxy de Nginx avec le flacon de Python

with import <nixpkgs> {}; 


    let 
     buildInputs = [ 
      nginx 
      python35Packages.python 
      python35Packages.flask 
      python35Packages.pyyaml 
     ]; 

     installPhase = '' 
      mkdir -p $out/pynix 
      cp -rv src config.yml $out/pynix 
      cd $out/pynix && nohup python src/main.py &> log.txt 
     ''; 


    in { 
     network.description = "Local machine"; 

     webserver = { 
      deployment = { 
       targetEnv = "virtualbox"; 
       virtualbox.memorySize = 1024; 
      }; 

      services = { 
       nginx = { 
        enable = true; 
        config = ''; 
         http { 
          include   ${nginx}/conf/mime.types; 
          server_name  localhost; 

          location/{ 
           proxy_pass http://localhost:5000; 
          } 
         } 
        ''; 
       }; 
      }; 
     }; 
    } 

src/main.py est un service Python Flask fonctionnant sur le port 5000. Comment puis-je obtenir ce service web et en cours d'exécution quand je fais nixops deploy -d DEPLOYMENT_NAME? S'il vous plaît aider.

Répondre

2

Je pense que vous avez confondu un paquet et un service. Le package est la sortie statique de la génération tandis que le service gère l'activation du package à l'exécution. Je pense que votre configuration tente actuellement de décrire une application python qui est exécutée au moment de la construction sans aucun service pour l'activer lors de l'exécution. C'est à peu près le contraire de ce que vous voulez! Surtout qu'avec nixops, vous utilisez probablement votre service dans un environnement différent de celui où il a été construit.
Vous devriez avoir une idée de ce que je veux dire en regardant les expressions nix pour le nginx package et le nginx service - spécifiquement la section services.systemd.nginx. De là, vous pouvez voir que le service nginx gère l'exécution du paquet nginx . Je pense que vous voudrez écrire des expressions similaires pour votre application python. Vous pouvez également voir s'il existe des expressions spécifiques aux services NixOS basés sur python que vous pouvez utiliser comme base, mais les expressions nginx doivent également être un guide suffisant.