仅用于应用程序二进制文件的Docker容器

时间:2016-11-24 08:21:20

标签: java docker

我想将每个应用程序版本存储为某种容器,然后只有几个“服务器”容器(DB,Web服务器)。这些容器之间的合作如何运作?

我可以想象在应用程序的“app”容器中定义一些卷。将存储二进制文件,然后将此卷文件夹用作“服务器”容器中的Web服务器的部署目录。

更新应用程序版本的过程如何运作?如何用一个“服务器”容器“绑定”多个二进制文件?

更普遍的是,我可以想象像这样部署 “将some-version-releasecontainer部署到serv1,serv2,serv3”,也许docker不是正确的工具,我需要一些更抽象的管理,如Swarm,kubernate等。但重点是创建应用程序二进制文件 selfstanding ,生态系统已知的只读实体

1 个答案:

答案 0 :(得分:1)

也许您需要一个docker-compose来让您的容器在虚拟网络上进行交互(但您仍然可以共享资源和卷)。我将在这里发布一个简单的例子。

docker-compose如下:

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

这里有四个容器。前两个是共享相同卷的示例应用程序。卷定义在应用程序的正下方,最后我们有一个容器,它运行一个简单的MySql DB。

共享卷容器的Dockerfile就是那个:

FROM alpine

VOLUME /jboss-as-7.1.1.Final/mydir/config

CMD /bin/sh -c "while true; do sleep 1; done"

docker compose是一个yml文件,让我们说my-docker-compose.yml。要运行它,您必须在终端中键入:

  

docker-compose -f path / to / compose / my-docker-compose.yml up -d

当然,图像应该已经构建完毕。