ホームページ >ウェブフロントエンド >jsチュートリアル >Docker ハンズオン: Nodejs、Flask、PostgreSQL を使用して Docker Compose ファイルを学習する
前の投稿では、Docker チュートリアルについて説明しました。
今回は、サンプル プロジェクトの実行を開始します: Nodejs、Flask、PostgreSQL イメージを含む Docker Compose ファイルに焦点を当てて、さまざまな層を実装します:
次のように表示されます:
GitHub コード リポジトリ: https://github.com/omerbsezer/Fast-Docker/tree/main/hands-on-sample-projects/full-stack-app
プロジェクト構造:
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
この投稿では、サンプルのフロントエンド (express.js)、バックエンド (flask)、データベース (postgresql) アプリを使用して Docker 構成ファイルを作成する方法を示します。まだご覧になっていない場合は、下のメニューで他の Docker コンテンツをご覧ください。
AWS、Kubernetes、Docker、Linux、DevOps、Ansible、機械学習、生成 AI、SAAS のヒント、チュートリアル、ハンズオン ラボについてはフォローしてください。
以上がDocker ハンズオン: Nodejs、Flask、PostgreSQL を使用して Docker Compose ファイルを学習するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。