Docker -Создание с 2 изображениями, которые используют те же зависимости и порты - PullRequest
0 голосов
/ 14 апреля 2020

Docker newb ie здесь, так что моя терминология может быть немного неправильной, но я пытаюсь сделать это правильно.

В настоящее время у меня есть 2 отдельных проекта на основе python, каждый со своим docker-compose.yml файла, и я хочу, чтобы один из них был включен вместе с другим. (Проблема?) Я смущен тем, что каждый из них использует одни и те же порты / зависимости, когда запускается самостоятельно, поэтому, если объединить их, это вызовет проблему? Тоесть я должен был бы изменить один, чтобы он вписался в другой? Nginx, средство обеспечения безопасности и zookeeper - это те, которые появляются при совместном использовании

В идеале я хотел бы просто добавить

A:
 image: <CDN>/A:latest

к B docker-compose.yml, а не Я должен изменить A one

Надеюсь, это имеет смысл, но я отредактирую / предоставлю более подробную информацию, если потребуется. Упрощенные docker -compose.yml файлы ниже

Проект A

version: '3.6'

services:

  A:
    build:
      context: .
      args:
        CI: $CI  # used to indicate if the build is run in a CI environment
    volumes:
      - .:/usr/src/app
    environment:
      POSTGRES_USER: test
      POSTGRES_PASSWORD: password
      ZK_ANNOUNCEMENT_CONTEXT: /services/apps/A/1.1
    depends_on:
      - zookeeper
      - postgres

  file-service:
    image: <CDN>/file-service:latest
    environment:
      AWS_ENDPOINT_URL: http://s3.amazonaws.com:4567  # actually fake s3, see links
      POSTGRES_USER: test
      POSTGRES_PASSWORD: password
      DB_HOST: postgres
    depends_on:
      - kafka
      - zookeeper
      - postgres
      - fakes3
    links:
      - fakes3:s3.amazonaws.com

  nginx: 
    image: <CDN>/docker/backend:nginx-1.11.12-alpine
    depends_on:
      - akit
      - nginx-fs-proxy
    volumes:
      - ./docker/nginx/templates/ssl.d/:/etc/nginx/templates/ssl.d/:ro

  nginx-fs-proxy:  # nginx proxy to file-service for handling SSL w/direct requests
    image: <CDN>/docker/backend:nginx-1.11.12-alpine
    volumes:
      - ./docker/nginx-fs-proxy/default.conf:/etc/nginx/nginx.conf
    depends_on:
      - file-service
      - fakes3
    links:
      - fakes3:s3.amazonaws.com

  security-tool:
    image: <CDN>/security-tool:1.1.7
    volumes:
      ...
    environment:
      ...
    depends_on:
      ...


  fakes3:
    image: elselabsio/fakes3

  postgres:
    image: postgres:9.5.4
    environment:
      POSTGRES_USER: test
      POSTGRES_PASSWORD: password
    volumes:
      - ./docker/postgres:/docker-entrypoint-initdb.d

  kafka:
    image: wurstmeister/kafka:0.10.0.0
    ports:
      - "9092:9092"
    environment:
      KAFKA_ADVERTISED_HOST: "kafka"
      KAFKA_ADVERTISED_PORT: "9092"
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
      KAFKA_CREATE_TOPICS: test-topic:1:1
    depends_on:
      - zookeeper

  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    ports:
      - "2181:2181"


  ############################################################
  # start-dependencies
  #
  # This service waits for other services to become availalbe
  # before staring and exiting successfully.
  #
  # https://8thlight.com/blog/dariusz-pasciak/2016/10/17/docker-compose-wait-for-dependencies.html
  ############################################################
  start-dependencies:
    image: dadarek/wait-for-dependencies:0.1
    depends_on:
      - zookeeper
      - security-tool
      - postgres
      - nginx
    command: >
      zookeeper:2181 \
      security-tool:8443 \
      postgres:5432 \
      nginx:443

Проект B

version: '3.6'

services:
  B:
    build:
      context: .
      args:
        CI: $CI  # used to indicate if the build is run in a CI environment
    volumes:
      - .:/usr/src/app
    environment:
      LOG_LEVEL: "INFO"
    depends_on:
      - zookeeper
      - es01.docker
      - kafka

  nginx:  # proxy to microservice ecosystem
    image: <CDN>/backend:nginx-1.11.12-alpine
    volumes:
      - ./docker/nginx/templates/ssl.d/:/etc/nginx/templates/ssl.d/:ro


  es01.docker:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.1
    environment:
      ...
    ulimits:
      memlock:
        soft: -1
        hard: -1

  security-tool:
    image: <CDN>/security-tool:1.1.7
    volumes:
      ...
    environment:
      ...
    depends_on:
      - zookeeper


  kafka:
    image: wurstmeister/kafka:0.10.0.0
    environment:
      KAFKA_ADVERTISED_HOST: "kafka"
      KAFKA_ADVERTISED_HOST_NAME: "kafka"  # "localhost" for local development
      KAFKA_ADVERTISED_PORT: "9092"
      KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:9092"  # "PLAINTEXT://localhost:9092" for local development
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
      KAFKA_CREATE_TOPICS: "test-topic:1:1" 
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
      - "29092:29092"

  zookeeper:
    image: wurstmeister/zookeeper:3.4.6



  ############################################################
  # start-dependencies
  #
  # This service waits for other services to become availalbe
  # before staring and exiting successfully.
  #
  # https://8thlight.com/blog/dariusz-pasciak/2016/10/17/docker-compose-wait-for-dependencies.html
  ############################################################
  start-dependencies:
    image: dadarek/wait-for-dependencies:0.1
    depends_on:
      - zookeeper
      - security-tool
      - nginx
      - es01.docker
      - B
      - kafka
    command: >
      zookeeper:2181 \
      security-tool:8443 \
      es01.docker:9200 \
      B:8000 \
      kafka:9092 \
      nginx:443
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...