2017-12-12 1 views
1

Ich habe eine Docker-Compose-Datei, die 6 verschiedene Microservices starten wird. Die Art, wie unser docker-repository eingerichtet wird, verhindert die Verwendung des 'neusten' Tags, also suche ich nach einer Möglichkeit, ein Skript auszuführen, bevor docker-compose die Microservice-Images abruft, die Umgebungsvariablen im Bereich des Docker-Compose setzen .yml-Datei.Docker-compose Setup-Skript zum Festlegen von Umgebungsvariablen aus Container

version: '3' 
services: 
    #Service 1 
    svc1: 
    image: some-snapshot.docker.privaterepo.com/some-service:${LATEST_SVC_TAG} 
    container_name: service1 
    ports: 
     - "8080:8080" 
    #Service 2 
    svc2: 
    image: some-snapshot.docker.privaterepo.com/some-service2:${LATEST_SVC2_TAG} 
    container_name: service2 
    ports: 
     - "8081:8081" 

Antwort

2

Ich bin nicht sicher, dass Sie wirklich ein "Skript" brauchen. Sie können einfach laufen so etwas wie:

LATEST_SVC_TAG=1.1 LATEST_SVC2_TAG=2.5 docker-compose up -d 

Alternativ Sie diese in einer Datei lokal .env platzieren konnte:

cat > .env <<EOF 
LATEST_SVC_TAG=1.1 
LATEST_SVC2_TAG=2.3 
EOF 

docker-compose up -d 
+0

Leider habe ich nicht klar war, muss ich nicht hart Code der Lage sein, die Versionsnummern, und dies muss auf einem CI-Server ausgeführt werden. Wenn Sie einen neuen Push-Vorgang durchführen möchten, ziehen Sie die neuesten Bilder für die anderen Dienste herunter und führen Sie einige Tests mit ihnen durch. – Alex

+0

Wenn Sie dies auf Ihrem CI-Server ausführen müssen, müssen Sie nur die Versionsparameter für Ihre CI-Jobs festlegen und sie in der CI-Umgebung verfügbar machen. Oder suchen Sie nach einem Skript, das * alle verfügbaren Versionen Ihrer Bilder auflistet, die Tags überprüft und herausfindet, welches das neueste ist, und dieses verwenden *? – larsks

Verwandte Themen