最近買了《代碼審計 企業級WEB代碼安全架構》這本書,想要測試一下里面的一些漏洞,但是又不想弄臟我的工作環境,於是便學習了一下怎樣用Docker來搭建LAMP環境。
先建個文件夾,用來存我們接下來的文件。
mkdir lamp
cd lamp/
然后寫php-apache的dockerfile。
自己寫,不直接用image的原因是直接用image沒裝mysqli插件,連不上數據庫。
touch Dockerfile
vi Dockerfile
FROM php:apache
RUN docker-php-ext-install mysqli
EXPOSE 80
接着就可以開始寫docker-compse了(有的裝docker會自帶,沒有的話手動裝下就好)。
touch docker-compose.yml
vi docker-copmose.yml
version: '3'
services:
web:
build:
context: ./
dockerfile: Dockerfile
volumes:
- ./php:/var/www/html
ports:
- 80:80
depends_on:
- db
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: alawys
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
檢查一下有沒有問題。
docker-compose config
然后就可以運行了。
docker-compose up
也可以加上-d參數讓它在后台運行。
docker-compose up -d
接着就可以到php目錄下寫我們的php代碼了。
(php目錄的owner是root,所以得先切換下owner,否則沒有權限進行寫操作。)
chown username:usergroup php/
測試下能不能正常連接到數據庫。
touch index.php
vi index.php
<?php
$host = 'db';
$user = 'root';
$pass = 'root';
$conn = new mysqli($db,$user,$pass);
if($conn->connection_error)
{
echo $conn->connection_error;
}
else
{
echo "Connected to Database Successfully.";
}
?>
訪問localhost,成功。
最后記一下我遇到的一個問題,就是連接docker的守護進程需要權限,所以每次都要加上sudo才能執行命令。
解決辦法就是把用戶加進docker組.
sudo useradd -aG docker $USER
newgrp docker
