Note_Tech

All technological notes.


Project maintained by simonangel-fong Hosted on GitHub Pages — Theme by mattgraham

Project: Docker Compose with Multiple local containers

Back


Command Description
docker compose up Create and start containers
docker compose up -d Detached mode: Run containers in the background
docker compose up --build Build images before starting containers
docker compose down Stop and remove containers, networks

Goal


Web App

Node JS app

{
  "dependencies": {
    "express": "*",
    "redis": "2.8.0"
  },
  "scripts": {
    "start": "node index.js"
  }
}
const express = require("express");
const redis = require("redis");

const app = express();
// specify the redis container by it name defined in the docker compose file
const client = redis.createClient({
  host: "redis-server",
  port: 6379, // default port for redis
});

client.set("visits", 0);

app.get("/", (req, res) => {
  client.get("visits", (err, visits) => {
    res.send("Number of visits is " + visits);
    client.set("visits", parseInt(visits) + 1);
  });
});

app.listen(8081, () => {
  console.log("Listening on port 8081");
});

Dockerfile

# base image
FROM node:alpine

# install dependencies
WORKDIR '/app'

COPY package.json .
RUN npm install

COPY . .

# startup commands
CMD ["npm", "start"]


Docker Compose

Yaml File

services:
  redis-server:
    image: "redis"
  node-app:
    build: .
    ports:
      - "8081:8081"

Start Docker compose

docker compose up
docker compose up -d
docker ps

docker compose down
docker ps


TOP