2016-07-16 5 views
1

Bei jedem Push startet Gitlab-ci meine Hauptdocker my-deploy und klont den Code in die /builds directoy.Gitlab CI: Apache-Dienst bereitstellen Docker DocumentRoot-Verzeichnis in Hauptdocker

Jetzt habe ich ein Service-Docker my-apache zu dem oben genannten hinzugefügt. Das Andockfenster my-apache ist so eingerichtet, dass es Apache startet und /shared/httpd/localhost als DocumentRoot für Apache verwendet.

Die projektbasierten .gitlab-ci.yml wie folgt aussieht:

# 
# This starts `my-deploy` docker and links an apache service docker... 
# 
testing: 
    stage: deploy 
    services: 
     - my-apache:latest 
    script: 
     - curl $MY_APACHE_PORT_80_TCP_ADDR 

Jetzt habe ich meinen ausgecheckt Code will (innen my-deploy Docker im Verzeichnis /builds) auf/in den Apache-Docker my-apache in den /shared/httpd/localhost dir verknüpft werden montiert.

Das sollte mount/Link sein:

my-deploy:/builds ->my-apache:/shared/httpd/localhost

Jede Idee, wenn dies möglich ist und wie diese konfigurieren?

Mein Gitlab Starter config (/etc/gitlab-runner/config.toml), die my-deploy als Läufer wie folgt aussieht ergänzt:

# Main Linter 
[[runners]] 
    url = "https://gitlab.mydomain.com/ci" 
    token = "XXXXXXXXXXXXXXXXXXXXXXXX" 
    name = "MY_DEPLOY" 
    executor = "docker" 
    limit = 0 
    [runners.docker] 
    image = "my-deploy:latest" 
    privileged = false 
    cache_dir = "" 
    disable_cache = true 
    wait_for_services_timeout = 90 

Update:

Wie Gitlab funktioniert die Docker Integration:

http://docs.gitlab.com/ce/ci/docker/using_docker_images.html#how-docker-integration-works

Antwort

0

Die gitlab ci doc in cludes seine in [runners.docker] section

volumes 

geben Sie zusätzliche Volumes, die montiert werden sollen (gleiche Syntax wie docker run -v option: siehe "Mount a shared-storage volume as a data volume¶")

Achten Sie darauf, ein gemeinsames Volumen zu definieren, die Sie als /build montieren würde in my-deploys und /shared/httpd/localhost in my-apache.

Damit würden die in my-deploy:/build erzeugten Daten in my-apache:/shared/httpd/localhost sichtbar sein.

Das heißt:

  • zuerst ein Andockfensters Datenvolumen erklären (außerhalb von Gitlab) mit docker volume create,
  • Sekunden, das Volumen in dem [runners.docker] Abschnitt Ihres gitlab-ci.yml

    verwenden
    volumes = ["my-named-volume:/build", "my-named-volume:/shared/httpd/localhost"] 
    
+0

Können Sie bitte ein Beispiel geben. – lockdoc

+0

@lockdoc Ich habe Dokumente, Links und Syntaxbeispiel zur Antwort hinzugefügt.Was ich befürchte (wie ich es noch nicht getestet habe), ist, dass Sie in Volumes mehrere Mountpunkte deklarieren, was bedeutet, dass Ihr benanntes Volume zweimal pro Service bereitgestellt wird. (eins in '/ build', ein in'/shared/httpd/localhost'). Überprüfen Sie es, und sehen Sie, ob mindestens Ihre zwei Container das gleiche Volumen auf den erwarteten Pfaden teilen. – VonC

+0

muss ich 'VOLUME' innerhalb der' Dockerfile' definieren, um ein gemeinsames Verzeichnis zu erstellen? – lockdoc