Install PHP MySQL in Docker
Hôm nay chúng ta sẽ cài đặt PHP, MySQL và phpmyadmin trên docker.
Đầu tiên ta cài docker, xem bài viết sau. install docker on arch linux
Sau đó ta cài docker-compose. Download tại đây.
https://github.com/docker/compose/releases
Sau đó gõ các câu lệnh sau:
cd $HOME/Downloads
tar -xvf compose-2.2.3.tar.gz
cd compose-2.2.3
sudo make
bin/docker-compose version
mv bin/docker-compose $HOME/.local/bin/
docker-compose version
Ta tạo thư mục project tại
/run/media/dt/HDD_1T_NTFS/IT_PROJECTS/PHP_CODE/php_basic/docker_php_mysql
|-docker_php_mysql
|-- src
|-- index.php
|-- Dockerfile
|-- docker-compose.yml
Dockerfile
FROM php:7.4-apache
RUN docker-php-ext-install pdo_msql
docker-compose.yml
version: "3.7"
services:
# PHP container
php:
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:80
volumes:
- ./src:/var/www/html/
# MySQL container
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- "mysql_data:/var/lib/mysql" # data container
# PHPmyadmin
phpmyadmin:
image: phpmyadmin
ports:
- "8081:80"
environment:
PMA_HOST: mysql
depends_on:
- mysql
volumes:
mysql_data:
driver: local
index.php
<?php
$servername = "mysql";
$username = "root";
$password = "123456";
try {
$conn = new PDO("mysql:host=$servername;dbname=test", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Ta gõ lệnh sau để tạo các container
docker-compose up -d
dt]% docker-compose up -d
[+] Running 3/0
⠿ Container docker_php_mysql-mysql-1 Running 0.0s
⠿ Container docker_php_mysql-phpmyadmin-1 Running 0.0s
⠿ Container docker_php_mysql-php-1 Running 0.0s
[dt-arco:docker_php_mysql]
Muốn remove container ta gõ lệnh
docker-compose down
[dt]% docker-compose down
[+] Running 4/4
⠿ Container docker_php_mysql-php-1 Removed 1.6ss
⠿ Container docker_php_mysql-phpmyadmin-1 Removed 1.7ss
⠿ Container docker_php_mysql-mysql-1 Removed 2.0ss
⠿ Network docker_php_mysql_default Removed 0.2ss
[dt-arco:docker_php_mysql]
Liệt kê các container
docker ps
Ta có thể xem các volume lưu trữ data.
docker volume ls
Ta truy cập web
http://localhost:8080
Ta truy cập vào mysql dùng phpmyadmin với user là root , pass là 123456.
http://localhost:8081
Ta có thể truy xuất vào mysql dùng lệnh sau, với user là root, pass là 123456
docker exec -it docker_php_mysql-mysql-1 mysql -uroot -p123456
Stop chính xác container ecda01429f85.
docker container stop ecda01429f85
Remove container ecda01429f85.
docker container remove ecda01429f85
Như vậy là ta đã setup xong php và mysql trên arch linux. Cùng nhau chiến PHP nào.