Maison >interface Web >js tutoriel >Docker Hands-on : Apprenez le fichier Docker Compose avec Nodejs, Flask, PostgreSQL
Dans le post précédent, nous avons évoqué le tutoriel Docker.
Cette fois, nous commençons à exécuter des exemples de projets : en nous concentrant sur le fichier Docker Compose avec des images Nodejs, Flask, PostgreSQL pour implémenter différents niveaux :
Cela montre :
Dépôt de code GitHub : https://github.com/omerbsezer/Fast-Docker/tree/main/hands-on-sample-projects/full-stack-app
Structure du projet :
project-root/ ├── docker-compose.yaml ├── frontend/ │ ├── package.json │ ├── index.js │ ├── index.html │ ├── Dockerfile ├── backend/ │ ├── app.py │ ├── requirements.txt │ ├── Dockerfile
FROM node:18 WORKDIR /home/app COPY . . EXPOSE 3000 RUN npm install CMD ["npm", "start"]
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Frontend</title> </head> <body> <h1>Frontend is working!</h1> </body> </html>
const express = require("express"); const app = express(); const port=3000; app.get("/", (req, res) => { res.sendFile(__dirname + "/index.html"); }) app.listen(port, () => { console.log(`running at port ${port}`); });
{ "name": "nodejsapp", "version": "1.0.0", "description": "nodejsapp description", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node index.js" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.17.3" } }
FROM python:3.11 WORKDIR /usr/src/app COPY . . RUN pip install -r requirements.txt EXPOSE 5000 CMD ["python", "app.py"]
from flask import Flask, jsonify app = Flask(__name__) @app.route('/') def home(): return "Backend is working!" @app.route('/api', methods=['GET']) def api(): return jsonify({"message": "Hello from the backend!"}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
flask
services: frontend: build: context: ./frontend container_name: frontend ports: - "3000:3000" volumes: - ./frontend:/usr/src/app depends_on: - backend backend: build: context: ./backend container_name: backend ports: - "5000:5000" volumes: - ./backend:/usr/src/app command: sh -c "pip install -r requirements.txt && python app.py" db: image: postgres:15 container_name: db environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydatabase volumes: - db_data:/var/lib/postgresql/data ports: - "5432:5432" volumes: db_data:
user@docker:~$ docker compose up -d [+] Running 4/4 ✔ Network node_default Created 0.1s ✔ Container db Started 0.7s ✔ Container backend Started 0.7s ✔ Container frontend Started
user@docker:~$ curl http://localhost:3000 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Frontend</title> </head> <body> <h1>Frontend is working!</h1> </body> user@docker:~$ curl http://localhost:5000/api {"message":"Hello from the backend!"} user@docker:~$ curl http://localhost:5000 Backend is working! </html>
user@docker:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3e51751b546c node-frontend "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp frontend d8d28325ce10 postgres:15 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp db 04c1d04a5668 node-backend "sh -c 'pip install …" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp backend user@docker:~$ docker compose down [+] Running 4/4 ✔ Container frontend Removed 1.0s ✔ Container db Removed 0.5s ✔ Container backend Removed 10.5s ✔ Network node_default Removed 0.2s user@docker:~$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Cet article montre comment créer un fichier de composition Docker à l'aide d'exemples d'applications frontend (express.js), backend (flask) et base de données (postgresql). Veuillez consulter le menu ci-dessous pour découvrir d'autres contenus Docker, si vous ne les avez jamais vus auparavant.
Suivez les conseils, didacticiels et ateliers pratiques pour AWS, Kubernetes, Docker, Linux, DevOps, Ansible, Machine Learning, Generative AI, SAAS.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!