2017-08-10 2 views
0

Ich versuche, Docker-Container zu erstellen, die Start-Skripte in Containers /etc/my_init.d-Verzeichnis über ansible enthalten sollte. Ich habe Schwierigkeiten, irgendeine Dokumentation zu finden, wie man das macht. Hier ist relevant Teil meiner yaml Datei:Bau Docker Container mit Start-Skripten über anssible

- name: Create container 
    docker: 
    name: myserver 
    image: "{{ docker_repo }}/myserver:{{ server.version }}" 
    state: started 
    restart_policy: always 
    docker_api_version: 1.18 
    registry: "{{ docker_repo }}" 
    username: "{{ registry_user }}" 
    password: "{{ registry_password }}" 
    links: 
    - "mywebservices" 
    ports: 
    - "8000:8000" 
    - "9899:9899" 
    volumes: 
    - "{{ myserver_home_dir }}/logs:/var/log/my_server" 
    env: 
     MY_ENVIRONMENT: "{{ my_environment }}" 
    when: myserver_action == "create" 
     or (myserver_action == "diff-create" and myserver.changed) 
     or myserver_action == "update" 

Was soll ich hier hinzufügen ansible zu sagen, meine Dateien in den Container des /etc/my_init.d während Build zu setzen?

+0

Über welche Dateien sprechen Sie hier? –

+0

Alle Dateien im Allgemeinen. Executable, Daten das ist nicht wirklich wichtig. Ich möchte eine sehr einfache Aufgabe erreichen. Nachdem der Container gestartet wurde, möchte ich mein Startskript ausführen. Es ist etwas ein Anti-Muster in Containern, aber ich habe die Anforderung, einen spezifischen Workflow beim ersten Start des Containers zu injizieren. –

Antwort

0

Erstens, Sie können nicht Container erstellen (Sie können es starten), Sie bauen Bilder.

Zweitens, docker Modul ist veraltet, verwenden Sie docker_image, um Bilder zu erstellen.

Sie sollten Ihre Dateien in Build-Verzeichnis (mit copy oder synchronize Module), zum Beispiel kopieren:

/tmp/build 

Dann Dockerfile erstellen, die sie von Build-Verzeichnis nehmen und in Ihr Bild hinzuzufügen.

Nach diesem Aufruf docker_image:

docker_image: 
    path: /tmp/build 
    name: myimage 

Schließlich Container starten:

docker_container: 
    image: myimage 
    name: mycontainer 
0

Unsicher, ob es relevant ist, wie ich weiß nicht, was Ihr Start ansible Inhalt tut, aber es ist wahrscheinlich es lohnt sich, das Ansible Container Projekt zu betrachten.

https://github.com/ansible/ansible-container

Sie können Ihre Container Bilder mit ansible Rollen anstelle eines Dockerfile bauen, instrumentieren sie lokal und implementieren sie in Produktion Kubernetes oder Red Hat Openshift.