Skip to content

Latest commit

 

History

History
127 lines (103 loc) · 1.78 KB

File metadata and controls

127 lines (103 loc) · 1.78 KB
version: '3.8'

services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - app

  app:
    build:
      context: ./app
      dockerfile: Dockerfile
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=postgres://user:password@db:5432/mydb
    depends_on:
      - db

  db:
    image: postgres:15
    restart: always
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data

  pgadmin:
    image: dpage/pgadmin4
    ports:
      - "8080:80"
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@example.com
      PGADMIN_DEFAULT_PASSWORD: admin
    depends_on:
      - db

volumes:
  pgdata:

Struttura delle cartelle:

project/
│
├── docker-compose.yml
├── nginx/
│   └── nginx.conf
└── app/
    ├── Dockerfile
    └── index.js

Esempio di nginx.conf:

events {}
http {
  server {
    listen 80;
    location / {
      proxy_pass http://app:3000;
    }
  }
}

Esempio di app/Dockerfile:

FROM node:18

WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install

COPY . .

EXPOSE 3000
CMD ["node", "index.js"]

Esempio di app/index.js:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello from Node.js app behind Nginx!');
});

app.listen(3000, () => {
  console.log('Server listening on port 3000');
});

package.json

{
  "name": "hello-docker",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.17.1"
  }
}
sudo docker compose up -d --build