Giới thiệu về Docker
Docker đã trở thành một trong những công cụ container hóa phổ biến nhất trong lĩnh vực DevOps. Nó cung cấp giải pháp hiệu quả cho việc phát triển, triển khai và vận hành các ứng dụng. Trong bài viết này, chúng ta sẽ khám phá ba dự án Docker thực tế, bao gồm cách container hóa ứng dụng Web Flask, ứng dụng Node.js kết hợp với MongoDB, và triển khai WordPress với MySQL thông qua Docker Compose. Những dự án này không chỉ giúp bạn nắm vững cách sử dụng Docker mà còn nâng cao khả năng lập trình ứng dụng của bạn.
1. Dự án Ứng Dụng Web Flask
Tổng quan
Dự án này sẽ hướng dẫn bạn cách container hóa một ứng dụng web đơn giản được xây dựng bằng Flask - một framework Python nhẹ, cho phép bạn dễ dàng tạo ứng dụng web.
Các bước thực hiện:
Bước 1: Thiết lập Ứng Dụng Flask
- Tạo thư mục dự án:
mkdir flask-docker-app
cd flask-docker-app
- Tạo tệp
app.py
trong thư mục:
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Dockerized Flask App!"
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
- Thêm tệp
requirements.txt
để định nghĩa các phụ thuộc:
Flask==2.0.3
Bước 2: Tạo Dockerfile
Tạo tệp Dockerfile
trong cùng thư mục:
# Sử dụng image Python chính thức
FROM python:3.9-slim
# Thiết lập thư mục làm việc
WORKDIR /app
# Sao chép nội dung thư mục hiện tại vào container
COPY . /app
# Cài đặt các phụ thuộc
RUN pip install --no-cache-dir -r requirements.txt
# Mở cổng 5000 cho ứng dụng
EXPOSE 5000
# Định nghĩa biến môi trường
ENV FLASK_APP=app.py
# Chạy ứng dụng
CMD ["flask", "run", "--host=0.0.0.0", "--port=5000"]
Bước 3: Xây dựng và Chạy Container Docker
- Xây dựng Docker image:
docker build -t flask-app .
- Chạy Docker container:
docker run -d -p 5000:5000 flask-app
Truy cập ứng dụng tại http://localhost:5000 để xem ứng dụng Flask đang chạy.
2. Dự án Ứng Dụng Node.js và MongoDB
Tổng quan
Dự án này sử dụng Docker Compose để triển khai một ứng dụng Node.js kết hợp với MongoDB, cho phép bạn quản lý ứng dụng đa container một cách dễ dàng hơn.
Các bước thực hiện:
Bước 1: Thiết lập Ứng Dụng Node.js
- Tạo thư mục dự án:
mkdir node-mongo-app
cd node-mongo-app
- Khởi tạo dự án Node.js và cài đặt các thư viện cần thiết:
npm init -y
npm install express mongoose
- Tạo tệp
server.js
:
const express = require('express');
const mongoose = require('mongoose');
const app = express();
mongoose.connect('mongodb://mongo:27017/dockerApp', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => console.log('MongoDB connected'))
.catch(err => console.log(err));
app.get('/', (req, res) => {
res.send('Hello from Node.js and MongoDB app in Docker!');
});
const PORT = 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
Bước 2: Tạo Dockerfile cho Node.js
# Sử dụng image Node.js chính thức
FROM node:14
# Thiết lập thư mục làm việc trong container
WORKDIR /app
# Sao chép và cài đặt phụ thuộc
COPY package*.json ./
RUN npm install
# Sao chép mã nguồn ứng dụng
COPY . .
# Mở cổng ứng dụng
EXPOSE 3000
# Chạy ứng dụng
CMD ["node", "server.js"]
Bước 3: Tạo Tệp Docker Compose
Tạo tệp docker-compose.yml
:
version: '3'
services:
nodeapp:
build: .
ports:
- '3000:3000'
depends_on:
- mongo
volumes:
- .:/app
mongo:
image: mongo
ports:
- '27017:27017'
Bước 4: Xây dựng và Chạy Ứng Dụng
- Chạy ứng dụng sử dụng Docker Compose:
docker-compose up --build
Truy cập ứng dụng tại http://localhost:3000.
3. Dự án Triển Khai WordPress và MySQL
Tổng quan
Trong dự án này, chúng ta sẽ thiết lập một trang web WordPress được hỗ trợ bởi MySQL, minh họa cách tạo môi trường giống như production với Docker Compose.
Các bước thực hiện:
Bước 1: Docker Compose cho WordPress và MySQL
Tạo tệp docker-compose.yml
:
version: '3'
services:
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: wordpress_password
WORDPRESS_DB_NAME: wordpress_db
volumes:
- ./wp_data:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: wordpress_password
MYSQL_ROOT_PASSWORD: root_password
volumes:
- ./db_data:/var/lib/mysql
Bước 2: Tạo Volume để Lưu trữ Dữ liệu
Đảm bảo dữ liệu WordPress và MySQL được lưu trữ an toàn thông qua volume.
Bước 3: Chạy Ứng Dụng
- Khởi động ứng dụng:
docker-compose up -d
Tiếp theo, truy cập http://localhost:8080 để hoàn tất cài đặt WordPress.
Kết luận
Bài viết này đã giới thiệu ba dự án Docker thực tế giúp bạn vững vàng hơn trong việc phát triển ứng dụng. Các dự án bao gồm việc container hóa ứng dụng Flask, triển khai ứng dụng Node.js với MongoDB, và thiết lập môi trường WordPress với MySQL. Những kinh nghiệm thực tiễn từ các dự án này sẽ giúp bạn hiểu rõ hơn về cách sử dụng Docker trong phát triển ứng dụng thực tế. Hãy bắt đầu thực hành và trải nghiệm sức mạnh của Docker trong công việc của bạn!
source: viblo