使用相同的映像名称在不同网络上的docker映像?

时间:2019-12-11 15:10:35

标签: docker docker-compose

如果我要维护2个不同的环境,最好的方法是什么,这两个环境中的某些图像相同。

docker网络A上的环境A:

  1. docker image kafka

  2. docker image sql

  3. docker image dot net应用程序A

docker网络B上的环境B:

  1. docker image kafka

  2. docker image sql

  3. docker image dot net应用程序B

当前,我使用docker compose env A yml调出envA。 然后当我想使用env B时,我需要修剪env A。

我不想修剪env A,而只是停止它们,然后在需要时将它们向上。

我试图停止env A,但是当我打开env B时,由于为docker image kafka和docker image sql定义了相同的图像文件,但发生了错误,尽管yml文件中指定了不同的网络名称。 >

env A的yml样本文件

version: '3'
networks:
  spm:
services:  
  postgres:
    networks: 
      - pm
    image: postgres
    container_name: postgres
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: 1234
      POSTGRES_PASSWORD: 1234

  zookeeper:
    networks: 
      - spm
    image: zookeeper
    hostname: zookeeper
    container_name: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOOKEEPER_CLIENT_PORT: 2181
      ZOOKEEPER_TICK_TIME: 2000
      ALLOW_ANONYMOUS_LOGIN: 1

  kafka:
    networks: 
      - spm
    image: kafka
    hostname: kafka
    container_name: kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
      ALLOW_PLAINTEXT_LISTENER: 'yes'
      KAFKA_ADVERTISED_HOST_NAME: kafka

  dotnetapp A:
    networks: 
      - spm
    build:
        context: ../
        dockerfile: ./A/Dockerfile
    image: dotnetapp:latest
    hostname: dotnetapp
    depends_on:
      - db
      - zookeeper
      - kafka
    ports:
      - "8015:8015"
    container_name: dotnetapp

0 个答案:

没有答案