2017-11-25 1 views
0

Mein Compose-Yaml hat 3 Dienste Ich bin in der Lage, die Container erfolgreich auszuführen, wenn ich Docker-Compose verwenden. Nun möchte ich diese 3 Container in ein einziges Bild zu bauen. Ist es möglich? hier ist mein compose-yamlErstellen Sie ein einzelnes Bild basierend auf Docker Compose-Containern

version: '2' 

services: 
    tomcat: 
    container_name: tomcatcomposejdk 
    build: . 
    image: 'apexits/ubuntu-oracle-jdk8-tomcat9' 
    ports: 
     - "8787:8080" 
     - "5003:5003" 
    networks: 
     b: 
     ipv4_address: 10.5.0.6 
    expose: 
     - "8787" 
     - "5003" 

    mysql: 
    container_name: mysqlcompose 
    build: . 
    image: 'mysql:5.6.36' 
    ports: 
     - "3306:3306" 
    expose: 
     - "3306" 
    networks: 
     b: 
     ipv4_address: 10.5.0.7 
    environment: 
     MYSQL_DATABASE: "bird251" 
     MYSQL_ROOT_PASSWORD: "root" 
     MYSQL_ALLOW_EMPTY_PASSWORD: "yes" 
    volumes: 
     - ./BIRD251.sql:/tmp/BIRD251.sql 
     - ./import.sh:/tmp/import.sh 

    elasticsearch: 
    container_name: escompose 
    build: . 
    image: 'elasticsearch:2.3.4' 
    ports: 
     - "9200:9200" 
     - "9300:9300" 
    expose: 
     - "9200" 
     - "9300" 
    networks: 
     b: 
     ipv4_address: 10.5.0.8 

networks: 
    b: 
    driver: bridge 
    ipam: 
    config: 
     - subnet: 10.5.0.0/16 
     gateway: 10.5.0.1 
+0

Nicht empfohlen und wird offiziell nicht unterstützt. Stattdessen können Sie ein benutzerdefiniertes Dockker-Image erstellen, zum Beispiel mit 'apexits/ubuntu-oracle-jdk8-tomcat9' als Basis und Sie installieren und konfigurieren mysql und elasticsearch services, anstatt vollwertige Docker-Images zu mischen verursachen große Albträume. –

Antwort

1

Dies wird nicht empfohlen. Sie müssen jedes Bild rückentwickeln und die benötigten Binärdateien/Dateien in das kombinierte Bild kopieren. Der Ansatz dafür ist die Verwendung docker multistage build:

FROM apexits/ubuntu-oracle-jdk8-tomcat9 as tomcat 

FROM mysql:5.6.36 as mysql 

FROM elasticsearch:2.3.4 
COPY --from=tomcat /.../tomcat-installtion .../tomcat-installation 
COPY --from=mysql /.../mysql-installtion .../mysql-installation 
... 

Dieser Ansatz sehr Trick ist, und Sie müssen umkehren jedes Bild konstruieren, welche Dateien/Ordner/config auf dem kombinierten Bild kopiert werden müssen, um herauszufinden, ...

Alternativ können Sie von einem der Bilder starten und die anderen Programme mit den Standardinstallationsrichtlinien installieren.

Auch wenn Sie damit erfolgreich sind, müssen Sie mehrere Prozesse in demselben Container starten, was nicht empfohlen wird und viele Schwierigkeiten mit sich bringt.

+0

Thnxx für Ihre Kommentare..Jetzt habe ich versucht, mysql, tomcat, elasticsearch und einen anderen Dienst auf Windows single image..ich bin nicht in der Lage, alle diese Dienste..ich bekomme einen Fehler als Fehler bei der Initialisierung von VM aufgetreten Konnte nicht genügend Platz für den Objekt-Heap reservieren ... bitte helfen Sie mir dabei. –

+0

Haben Sie Schritte in https://docs.docker.com/engine/admin/multi-service_container/ – yamenk

Verwandte Themen