Utilizzando la finestra mobile-comporre per impostare i contenitori fusi orari

Ho un mobile-comporre file di esecuzione di un paio di Dockerfiles per creare il mio contenitori. Non voglio modificare il mio Dockerfiles per impostare fusi orari, perché potrebbero cambiare in qualsiasi momento da parte dei membri della mia squadra e ho un mobile-comporre.override.file yml ai cambiamenti di ambiente. Tuttavia, uno dei miei contenitori (una a base di Selenio) sembra non tirare host fuso orario e che è causa di problemi per me. Sulla base di che voglio applicare i fusi orari di tutti i miei contenitori. Nel mio Dockerfiles adesso faccio

ENV TZ=America/Denver
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

E tutto funziona bene. Come faccio a replicare lo stesso comando nella finestra mobile-comporre e sintassi?

InformationsquelleAutor noname | 2016-08-26

 

3 Replies
  1. 26
    version "2"
    
    services:
      serviceA:
        ...
        environment:
          TZ: "America/Denver"
        command: >
          sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && 
          echo $TZ > /etc/timezone &&
          exec my-main-application"
    

    Edit: La domanda non chiedere per essa, ma ho appena aggiunto exec my-main-application per mostrare come il processo principale sarebbe specificato. exec è importante per assicurarsi che my-main-application riceve Ctrl-C (SIGINT/SIGKILL).

    • Tenete a mente che la finestra mobile-comporre il “comando” ignora il comando di default, se qualsiasi. Riferimento: docs.docker.com/compose/compose-file/#/command
    • Questo è corretto, e che anche il comportamento desiderato qui. Sul veloce recensione del mio codice, ho capito che ho bisogno di specificare in che modo il processo principale per il contenitore è iniziato. L’aggiunta di adesso.
    • cosa devo mettere per my-main-application? dove si prende questo nome? nome del servizio? nome della dll?
    • È il nome dell’eseguibile all’interno del contenitore. Aggiungere il percorso se non riesco a trovarlo.
    • Quindi il mio dockerfile che è stato generato da VS per la finestra mobile di progetto contiene ENTRYPOINT ["dotnet", "vote-server.dll"]. sarebbe la mia docker-compose comando, pertanto, essere command: > sh -c "ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && exec dotnet vote-server.dll"? inoltre, ogni volta che ho un comando nel mio mobile-la compongono non si avvia con il messaggio che non trova il server del contenitore di… suppongo sia perché il comando non avviare il programma vero e proprio, il contenitore si blocca e quando si tenta di lavorare con esso, il suo passato
    • Se si dispone di un punto di accesso definito, quindi il command è passata come argomento al punto di ingresso eseguibile. Non è quello che vuoi qui. Per rendere più semplice qui, basta ridefinire entrypoint: [] e utilizzare solo command: come è stato scritto sopra. Vedere medium.freecodecamp.org/… per la spiegazione.

  2. 13

    Questa è la soluzione più semplice:

    environment:
      - TZ=America/Denver
    
    • Mi chiedo se le virgolette sono necessarie come "TZ=America/Denver"
  3. 5

    La soluzione più semplice sarebbe condividere volume nella finestra mobile-comporre.yml come questo

    ipchanger:
      image: codertarasvaskiv/ipchanger:raspberry
      volumes:
        - "/etc/localtime:/etc/localtime:ro"
    
    • ro – significa contenitore può solo leggere /etc/localtime di host-macchina.

Lascia un commento