hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Cấu trúc dữ liệu và giải thuật
    • Lập Trình C# Cơ Bản
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • Docker
Lệnh docker-compose và chạy các dịch vụ docker

Lệnh docker-compose và chạy các dịch vụ docker

  • 08-10-2024
  • Toanngo92
  • 0 Comments

Dưới đây là một bài viết tương tự mà bạn có thể đăng lên website, với nội dung hướng dẫn sử dụng docker-compose để cài đặt PHP, Nginx, và MariaDB:


Mục lục

  • Hướng Dẫn Sử Dụng Docker-Compose Cài Đặt PHP, Nginx, và MariaDB
    • Giới thiệu
    • Tại sao nên dùng Docker Compose?
    • Chuẩn bị
    • Cấu hình Docker Compose
      • Giải thích tệp docker-compose.yml:
    • Cấu hình Nginx
    • Cấu trúc thư mục dự án
    • Tạo tệp PHP
    • Khởi động Docker Compose
    • Kiểm tra
      • Ví dụ docker-compose.yml với Apache:
        • Giải thích:
      • Ví dụ docker-compose.yml với OpenLiteSpeed:
        • Giải thích:
      • Lưu ý khi sử dụng OpenLiteSpeed:
      • Khởi động dịch vụ
    • Tổng kết

Hướng Dẫn Sử Dụng Docker-Compose Cài Đặt PHP, Nginx, và MariaDB

Giới thiệu

Trong bài viết này, chúng ta sẽ tìm hiểu cách sử dụng Docker Compose để thiết lập một môi trường phát triển web đơn giản gồm PHP, Nginx và MariaDB. Docker Compose là một công cụ mạnh mẽ cho phép bạn định nghĩa và quản lý nhiều container Docker dưới dạng tệp cấu hình YAML. Điều này giúp tạo ra một môi trường phát triển nhất quán và dễ dàng triển khai.

Tại sao nên dùng Docker Compose?

Docker Compose giúp chúng ta:

  • Tạo môi trường phát triển dễ dàng mà không cần cấu hình từng dịch vụ riêng lẻ.
  • Đảm bảo tính đồng nhất giữa các môi trường (local, staging, production).
  • Quản lý các container Docker dưới dạng tập tin duy nhất (docker-compose.yml).
  • Tích hợp nhiều dịch vụ trong cùng một ứng dụng như Nginx, PHP, MariaDB, Redis, …

Chuẩn bị

Để bắt đầu, bạn cần cài đặt Docker và Docker Compose trên máy tính. Nếu bạn chưa cài đặt, có thể tham khảo hướng dẫn cài đặt từ trang chủ của Docker: Tải về và cài đặt Docker.

Cấu hình Docker Compose

Bước đầu tiên là tạo một tệp docker-compose.yml trong thư mục dự án của bạn. Tệp này sẽ mô tả cách Docker khởi động các container cho PHP, Nginx và MariaDB.

Tạo tệp docker-compose.yml với nội dung sau:

version: '3'
services:
  # Dịch vụ Nginx
  nginx:
    image: nginx:latest
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./config/nginx:/etc/nginx/conf.d
    depends_on:
      - php
    networks:
      - mynetwork

  # Dịch vụ PHP
  php:
    image: php:8.1-fpm
    container_name: php
    volumes:
      - ./src:/var/www/html
    networks:
      - mynetwork

  # Dịch vụ MariaDB
  db:
    image: mariadb:latest
    container_name: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: example_db
      MYSQL_USER: user
      MYSQL_PASSWORD: user_password
    ports:
      - "3306:3306"
    volumes:
      - ./data/db:/var/lib/mysql
    networks:
      - mynetwork

# Định nghĩa mạng lưới cho các container
networks:
  mynetwork:
    driver: bridge

Giải thích tệp docker-compose.yml:

  • version: Định nghĩa phiên bản của Docker Compose.
  • services: Đây là nơi khai báo các dịch vụ (containers) cần sử dụng. Trong trường hợp này gồm nginx, php và db (MariaDB).
  • nginx: Sử dụng image nginx:latest, ánh xạ cổng 8080 của host với cổng 80 của container để truy cập trang web qua http://localhost:8080.
  • php: Sử dụng image php:8.1-fpm để chạy PHP với FastCGI Process Manager (FPM).
  • db (MariaDB): Chạy MariaDB, thiết lập các biến môi trường như MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, và MYSQL_PASSWORD.
  • networks: Các container được kết nối với cùng một mạng mynetwork để chúng có thể giao tiếp với nhau.

Cấu hình Nginx

Tiếp theo, chúng ta cần tạo cấu hình cho Nginx. Trong thư mục gốc của dự án, tạo thư mục config/nginx và tạo tệp default.conf với nội dung sau:

server {
    listen 80;
    server_name localhost;
    root /var/www/html;

    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

    location ~ /\.ht {
        deny all;
    }
}

Cấu hình này thiết lập Nginx để phục vụ PHP qua FastCGI, định nghĩa tệp gốc (root) là thư mục /var/www/html trong container PHP.

Cấu trúc thư mục dự án

Thư mục dự án của bạn sẽ có cấu trúc như sau:

project-root/
│
├── config/
│   └── nginx/
│       └── default.conf
├── src/
│   └── index.php
├── data/
│   └── db/  # Lưu trữ dữ liệu MariaDB
└── docker-compose.yml
  • config/nginx/default.conf: Cấu hình cho Nginx.
  • src/index.php: Thư mục chứa mã nguồn PHP của bạn.
  • data/db/: Thư mục lưu trữ dữ liệu của MariaDB.

Tạo tệp PHP

Tạo tệp index.php trong thư mục src/ để kiểm tra quá trình thiết lập:

<?php
phpinfo();
?>

Tệp này sẽ hiển thị thông tin cấu hình PHP khi bạn truy cập trang web.

Khởi động Docker Compose

Để khởi động các dịch vụ, bạn chỉ cần chạy lệnh:

docker-compose up -d

Lệnh này sẽ tải các image, khởi động các container Nginx, PHP, và MariaDB. Bạn có thể truy cập trang web tại http://localhost:8080 để xem kết quả.

Kiểm tra

  • Truy cập http://localhost:8080 để kiểm tra xem PHP đã hoạt động chưa.
  • Kết nối với MariaDB qua localhost:3306 với các thông tin đăng nhập được cấu hình trong tệp docker-compose.yml.

Ngoài ra, mình giới thiệu cho các bạn một số ví dụ sử dụng docker-compose cho các tình huống server sử dụng Apache hoặc OneLiteSpeed:

Dưới đây là một ví dụ về tệp docker-compose.yml sử dụng Apache và OpenLiteSpeed để chạy PHP và MariaDB. Bạn có thể chọn giữa Apache hoặc OpenLiteSpeed tùy thuộc vào nhu cầu của mình.

Ví dụ docker-compose.yml với Apache:

version: '3'
services:
  # Dịch vụ Apache
  apache:
    image: php:8.1-apache
    container_name: apache
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
    networks:
      - mynetwork

  # Dịch vụ MariaDB
  db:
    image: mariadb:latest
    container_name: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: example_db
      MYSQL_USER: user
      MYSQL_PASSWORD: user_password
    ports:
      - "3306:3306"
    volumes:
      - ./data/db:/var/lib/mysql
    networks:
      - mynetwork

# Định nghĩa mạng lưới cho các container
networks:
  mynetwork:
    driver: bridge

Giải thích:

  • Apache: Sử dụng image php:8.1-apache tích hợp PHP và Apache. Cổng 8080 của máy chủ được ánh xạ tới cổng 80 của Apache trong container. Mã nguồn của bạn sẽ được lưu trữ trong thư mục ./src và ánh xạ tới thư mục /var/www/html của container.
  • MariaDB: Tương tự như ví dụ trước, MariaDB sử dụng thông tin đăng nhập từ biến môi trường.

Ví dụ docker-compose.yml với OpenLiteSpeed:

version: '3'
services:
  # Dịch vụ OpenLiteSpeed
  openlitespeed:
    image: litespeedtech/openlitespeed:latest
    container_name: openlitespeed
    ports:
      - "8088:8088"  # OpenLiteSpeed mặc định sử dụng cổng 8088
      - "7080:7080"  # Cổng quản lý OpenLiteSpeed
    volumes:
      - ./src:/var/www/vhosts/localhost/html
    networks:
      - mynetwork

  # Dịch vụ PHP
  php:
    image: php:8.1-fpm
    container_name: php
    volumes:
      - ./src:/var/www/vhosts/localhost/html
    networks:
      - mynetwork

  # Dịch vụ MariaDB
  db:
    image: mariadb:latest
    container_name: mariadb
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: example_db
      MYSQL_USER: user
      MYSQL_PASSWORD: user_password
    ports:
      - "3306:3306"
    volumes:
      - ./data/db:/var/lib/mysql
    networks:
      - mynetwork

# Định nghĩa mạng lưới cho các container
networks:
  mynetwork:
    driver: bridge

Giải thích:

  • OpenLiteSpeed: Sử dụng image litespeedtech/openlitespeed. OpenLiteSpeed sử dụng cổng 8088 cho HTTP và cổng 7080 cho bảng điều khiển quản lý. Mã nguồn được ánh xạ tới thư mục /var/www/vhosts/localhost/html.
  • PHP: Dịch vụ PHP với FastCGI (FPM) được ánh xạ tương tự như trong ví dụ Nginx.
  • MariaDB: Giống như trong ví dụ trước, MariaDB được cấu hình với các biến môi trường tương tự.

Lưu ý khi sử dụng OpenLiteSpeed:

  • Bạn có thể truy cập bảng quản lý của OpenLiteSpeed qua đường dẫn http://localhost:7080 để điều chỉnh cấu hình.
  • Khi sử dụng OpenLiteSpeed, hãy đảm bảo mã nguồn PHP và tệp cấu hình được đặt đúng vị trí để container có thể truy cập.

Khởi động dịch vụ

Sau khi tạo tệp docker-compose.yml, bạn chạy lệnh sau để khởi động các dịch vụ:

docker-compose up -d

Cả hai phiên bản đều sử dụng cấu trúc mạng bridge để kết nối các container với nhau. Tùy thuộc vào nhu cầu, bạn có thể chọn Apache hoặc OpenLiteSpeed để cài đặt cho môi trường của mình.

Tổng kết

Sử dụng Docker Compose giúp bạn dễ dàng thiết lập một môi trường phát triển web với PHP, Nginx và MariaDB chỉ với vài bước đơn giản. Điều này đặc biệt hữu ích cho các dự án có nhiều thành viên hoặc khi bạn muốn giữ cho môi trường phát triển và môi trường sản xuất nhất quán.

Nếu bạn gặp bất kỳ vấn đề gì, hãy kiểm tra lại cấu hình và logs của các container bằng lệnh docker-compose logs. Docker Compose là một công cụ mạnh mẽ và linh hoạt, giúp bạn quản lý và triển khai ứng dụng nhanh chóng và hiệu quả.

Bài viết liên quan:

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền
Hướng dẫn tạo Docker Container mã nguồn WordPress qua docker-file và docker compose
Giám sát, theo dõi lịch sử/trạng thái container
Khái niệm Network Bridge trong Docker và cách kết nối các container cùng phục vụ
Chia sẻ dữ liệu giữa máy chủ Host, các Container trong Docker
Lưu container thành image file, tạo container từ image cục bộ
Khái niệm container, image trong docker
Giới thiệu docker và hướng dẫn cài đặt docker

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

2. PHÂN TÍCH VÀ ĐẶC TẢ HỆ THỐNG

3. THIẾT KẾ HỆ THỐNG

1. TỔNG QUAN KIẾN THỨC THỰC HÀNH TRIỂN KHAI DỰ ÁN CÔNG NGHỆ THÔNG TIN

Hướng dẫn tự cài đặt n8n comunity trên CyberPanel, trỏ tên miền

Mẫu prompt tạo mô tả chi tiết bối cảnh

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×