saharsa
saharsa

Reputation: 497

Docker-Compose File

I have three seperate Microservices, and for each of them in their directory I have Dockerfile. photo of my microservices

I am beginner in Docker and I am a little confused. for define Docker Compose file, I must define three docker-compose.yml files in the directory of each services?! Or I must define just one docker-compose.yml file for all my services?! If yes, in which directory?

Upvotes: 0

Views: 152

Answers (2)

Nat
Nat

Reputation: 1762

Docker compose is built for having multiple apps, with a Dockerfile it is very powerful. To put it simply you can split a docker-compose file into things called 'services' and they act as different, separate apps/microservices, so say I wanted a nodejs app and a database within the same docker-compose file and Dockerfile:

Dockerfile:

FROM node:7.7.2-alpine
WORKDIR /usr/app
COPY package.json .
RUN npm install --quiet
COPY . .

Docker-compose:

version: '3.1'

services:

mongo:
  image: mongo
  name: database
  restart: always
  environment:
    MONGO_INITDB_ROOT_USERNAME: root
    MONGO_INITDB_ROOT_PASSWORD: example

web:
  build: .
  command: npm run dev
  volumes:
    - .:/usr/app/
    - /usr/app/node_modules
  ports:
    - "3000:3000"
  depends_on:
    - mongo

If you ran that in the directory you want to work at, it will always stay in that directory . You can name each service it's own name. This example it's mongo and web. Once running, locally you can reference and connect to your services just by using their respective names.

I recommend these two YouTube video. Quick and simple. Here and here

Upvotes: 1

Sándor Jankovics
Sándor Jankovics

Reputation: 898

You don't need to create separate compose file. Docker compose provides you the option to specify the location of Dockerfiles in order to setup the containers. In the root folder which contains this three app create a compose file.

For an example check this file https://github.com/dotnet-architecture/eShopOnContainers/blob/dev/src/docker-compose.yml

Upvotes: 1

Related Questions