Contenedor Docker solo para binarys de aplicaciones

Me gustaría tener cada versión de la aplicación almacenada como algún tipo de contenedor y luego tener varios contenedores de solo "server" (DB, server web). ¿Cómo puede funcionar la cooperación entre esos contenedores?

Puedo imaginarme definir algún volumen en el contenedor de "aplicaciones" donde está la aplicación. los binarys se almacenarán y luego usarán esta carpeta de volúmenes como directory de implementación del server web en el contenedor "server".

¿Cómo funcionará el process para actualizar la versión de la aplicación? ¿Cómo puedo "enlazar" múltiples binarys con un contenedor "server"?

De manera más general, me puedo imaginar para implementar de esta manera "desplegar alguna versión-liberarcontainer para serv1, serv2, serv3", tal vez docker no es la herramienta adecuada y necesitaré una gestión más abstracta como Swarm, kubernate, etc. Pero el punto principal es para crear una aplicación binaria como una entidad autodidacta de solo lectura conocida por el ecosistema.

Tal vez necesite una compuerta para que sus contenedores interactúen en una networking virtual (pero aún puede compartir resources y volúmenes). Voy a publicar un ejemplo simple aquí.

La docker-compose es la siguiente:

version: '2' services: myapp_service1: image: myapp_image1:latest networks: mynetwork: aliases: - myalias1 depends_on: - mysql expose: - 8080 volumes: - /opt/myapp/logs:/jboss-as-7.1.1.Final/logs environment: - "JAVA_OPTS=-Xms64m -Xmx128m -XX:MaxPermSize=128m -Djava.net.preferIPv4Stack=true" - "db=mysql.myapp" volumes_from: - myapp_volume myapp_service2: image: myapp_image2:latest networks: mynetwork: aliases: - myalias2 depends_on: - mysql expose: - 8080 volumes: - /opt/myapp/logs:/jboss-as-7.1.1.Final/logs environment: - "JAVA_OPTS=-Xms64m -Xmx128m -XX:MaxPermSize=128m -Djava.net.preferIPv4Stack=true" - "db=mysql.myapp" volumes_from: - myapp_volume myapp_volume: container_name: myapp_volume image: myapp_volume_image:latest mysql: image: mysql networks: mynetwork: aliases: - mysql.myapp expose: - 3306 ports: - "13306:3306" volumes: - /opt/myapp/mysql:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: root networks: mynetwork: driver: bridge 

Aquí tenemos cuatro contenedores. Las dos primeras son aplicaciones de ejemplo que comparten el mismo volumen. El volumen se define justo debajo de las aplicaciones y al final tenemos un contenedor que ejecuta un simple DB de MySql.

El file Docker para el contenedor de volumen compartido es ese:

 FROM alpine VOLUME /jboss-as-7.1.1.Final/mydir/config CMD /bin/sh -c "while true; do sleep 1; done" 

La docker compose es un file yml, digamos my-docker-compose.yml. Para ejecutarlo, debes escribir esto en la terminal:

docker-compose -f ruta / a / componer / my-docker-compose.yml up -d

Por supuesto, las imágenes ya deberían estar construidas.