Hướng dẫn cài đặt LAMP (Linux + Apache + MySQL + PHP) trên Docker

2020/10/14 07:37:42

Theo luồng phát triển của docker, các nhà phát triển có nhu cầu triển khai các dự án bằng LAMP trên nền tảng này để tận dụng được sự linh hoạt của nó. Dưới đây là hướng dẫn cài đặt LAMP trên nền tảng docker.

Cài đặt docker

Ubuntu 20.04

Tùy vào hệ điều hành hiện tại mà có các phương án cài đặt docker khác nhau. Dưới đây là hướng dẫn cài đặt docker trên Ubuntu 20.04

$ sudo apt update
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
$ sudo apt update
$ sudo apt install docker-ce

Vậy là ta đã cài xong docker. Để kiểm tra trạng thái hoạt động, ta sử dụng câu lệnh.

$ sudo systemctl status docker

Nếu bạn không muốn docker tự khởi động cùng hệ điều hành, có thể dùng.

$ sudo systemctl disable docker

Và nếu muốn khởi động thủ công thì dùng

$ sudo systemctl start docker

Linux khác

Để đơn giản, ta có thể cài đặt docker thông qua snapcraft.

https://snapcraft.io/docker

Cài đặt docker-compose

Nếu bạn cài đặt docker qua snapcraft thì docker-compose đã được tích hợp sẵn. Nếu không, bạn có thể thực hiện các bước sau đây.

Ta lần lượt chạy các câu lệnh.

$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

Kiểm tra lại

$ docker-compose --version

Cài đặt LAMP

Tạo một thư mục chứa toàn bộ mã nguồn, xong tạo file .Dockerfile trong thư mục đó với nội dung.

FROM php:7.4.3-apache
RUN docker-php-ext-install mysqli pdo pdo_mysql

Xong, soạn file docker-compose.yaml với nội dung.

version: "3.7"
services:
  web-server:
    build:
      dockerfile: .Dockerfile
      context: .
    restart: always
    volumes:
      - "./html/:/var/www/html/"
    ports:
      - "8080:80"
  mysql-server:
    image: mysql:8.0.19
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - mysql-data:/var/lib/mysql

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:5.0.1
    restart: always
    environment:
      PMA_HOST: mysql-server
      PMA_USER: root
      PMA_PASSWORD: secret
    ports:
      - "5000:80"
volumes:
  mysql-data:

Để test, ta tạo thư mục html rồi tạo file info.php bên trong thư mục đó với nội dung sau.

<?php
phpinfo()

Quay lại trang chủ