Итак, у меня есть пять разных контейнеров для эластичного поиска, кибаны, бэкэнда (узла), внешнего интерфейса (реагирования) и монго.Я хочу создать одиночный образ для моего приложения.Часть внешнего интерфейса можно оставить отдельной.
Мой 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, и документация действительно огромна, чтобы просмотреть все возможности и возможности.Я был бы очень признателен за помощь или некоторые ключевые слова для ресурсов, которые могут помочь с тем же:)