Есть ли способ объединить контейнеры frondend и backend (по отдельности) в один образ докера? - PullRequest
0 голосов
/ 29 мая 2019

Итак, у меня есть пять разных контейнеров для эластичного поиска, кибаны, бэкэнда (узла), внешнего интерфейса (реагирования) и монго.Я хочу создать одиночный образ для моего приложения.Часть внешнего интерфейса можно оставить отдельной.

Мой docker-compose.yml

version: "3"

services:
  ##########################
  ### SETUP SERVER CONTAINER
  ##########################
  server:
    container_name: nbserver
    # Tell docker what file to build the server from
    build:
      context: ./server
      dockerfile: Dockerfile-dev
    # The ports to expose
    expose:
      - 3001
    # Environment variables
    environment:
      - MONGO_URI=mongodb://db:27017/db
      - PORT=4000
      - DEBUG=worker:*
      - MORGAN=combined
      - NODE_ENV=development
    # Port mapping
    ports:
      - 3001:3001
    # Volumes to mount
    volumes:
      - ./server:/app/server
    # Run command
    # Nodemon for hot reloading (-L flag required for polling in Docker)
    command: nodemon -L ./server.js
    # Connect to other containers
    links:
      - db
      - elasticsearch
      - kibana
    # Restart action
    restart: always
  ##########################
  ### SETUP CLIENT CONTAINER
  ##########################
  client:
    container_name: nbclient
    build:
      context: ./client
      dockerfile: Dockerfile-dev
    environment:
      - REACT_APP_PORT=3000
      - CHOKIDAR_USEPOLLING=true
    expose:
      - 3000
    ports:
      - 3000:3000
    volumes:
      - ./client/src:/app/client/src
      - ./client/public:/app/client/public
    links:
      - server
    command: npm run start
    restart: always

  ##########################
  ### SETUP DB CONTAINER
  ##########################
  db:
    container_name: nbmongo
    image: mongo
    ports:
      - 27017:27017
    restart: always

  ##########################
  ### SETUP ELASTIC SEARCH
  ##########################
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:5.6.16
    environment:
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "xpack.security.enabled=false"
    volumes:
      - esdata:/usr/share/elasticsearch/data
    ulimits:
      memlock:
        soft: -1
        hard: -1
    ports:
        - "9200:9200"

  ##########################
  ### SETUP KIBANA
  ##########################
  kibana:
    image: docker.elastic.co/kibana/kibana:5.6.16
    ports:
      - "5601:5601"
    environment:
      - "xpack.security.enabled=false"

volumes:
  esdata:

Он отлично работает для разработки.Для производства мне нужно построить образ.Так что достаточно просто запустить и запустить Docker и запустить приложение.

Я довольно новичок в Docker, и документация действительно огромна, чтобы просмотреть все возможности и возможности.Я был бы очень признателен за помощь или некоторые ключевые слова для ресурсов, которые могут помочь с тем же:)

...