An open API service indexing awesome lists of open source software.

https://github.com/kongruksiamza/learning-docker

โค้ดประกอบการสอน Docker เบื้องต้น
https://github.com/kongruksiamza/learning-docker

docker-container doker

Last synced: about 1 month ago
JSON representation

โค้ดประกอบการสอน Docker เบื้องต้น

Awesome Lists containing this project

README

          



โค้ดประกอบการสอน Docker เบื้องต้น























kongruksiamza

## 💻 Flask Application

#### ติดตั้ง Python
- ดาวน์โหลด : https://python.org/

#### ติดตั้ง Flask
```
pip install flask
```
#### แสดงรายการ Package
```
pip list
```

#### โค้ดประกอบการสอน app.py (Flask)
```
from flask import Flask
app = Flask(__name__)

@app.route('/')
def home():
return "

Hello Application

"

if __name__ == '__main__':
app.run(host="localhost", port=5000)
```

#### รันแอพพลิเคชั่น

```
python app.py
```

## 📝 Dockerfile

#### สร้างไฟล์เก็บรายชื่อ Package
```
pip freeze > requirements.txt
```

## คำสั่งใน Dockerfile
```
FROM python:3.13
WORKDIR /kongruksiam/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["python", "app.py"]
```

#### Build Image

```
docker build -t .
```

## 🚪 Port Mapping
```
docker run --rm -p 3000:5000 --name mycontainer my-python-app:0.1
```
## 🛠️ Docker Compose

#### compose.yaml
```
name: myproject

services:
web:
build: .
ports:
- "5000:5000"
```

## 🗄️ PyMongo (Driver)

#### ติดตั้ง Package
```
pip install pymongo
```
#### เชื่อมต่อฐานข้อมูล
```
client = MongoClient("mongodb://localhost:27017")
db = client["mydb"]
collection = db["users"]
```
#### กำหนดข้อมูลเริ่มต้น
```
def init_data():
if collection.count_documents({}) == 0:
collection.insert_one({"name": "ก้องรักสยาม", "age": 30})
print("บันทึกข้อมูลเรียบร้อย")
```

#### แสดงข้อมูลในหน้าเว็บ
```
@app.route('/data')
def get_data():
users = collection.find()
return "
".join([f"ชื่อ : {user['name']} , อายุ {user['age']} ปี


" for user in users])
```
## 💾 MongoDB (Shell)
#### ฐานข้อมูล
```
show dbs
```
```
use mydb
```

#### บันทึกข้อมูลรายการเดียว
```
db.users.insertOne({name:"ชาลี",age:20})
```

#### บันทึกข้อมูลหลายรายการ
```
db.users.insertMany([{name:"สมหมาย",age:18},{name:"สมชาย",age:25},{name:"สมหญิง",age:20}])
```

## 🛢️ Volumes
```
name: myproject

services:
web:
build: .
ports:
- "5000:5000"
db:
image: mongo
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
- mongo-configdb:/data/configdb

volumes:
mongo-data:
mongo-configdb:
```

## 📚 หลักสูตรที่เกี่ยวข้อง (ภาษาไทย)
- [Docker](https://www.youtube.com/playlist?list=PLltVQYLz1BMCid5BGMfvPKUYg7gl6p2ZN)
- [Python & Flask Framework](https://www.youtube.com/playlist?list=PLltVQYLz1BMBe14u-5pxxEsbJSbdxd1Vs)
- [MongoDB](https://www.youtube.com/playlist?list=PLltVQYLz1BMDcG4oMP-hB3VCmIWVXF-fX)
- [Visual Studio Code](https://www.youtube.com/playlist?list=PLltVQYLz1BMDyQX1B6IccCOeO3TTIsZmp)