Docker Compose搭建LAMP環境


最近買了《代碼審計 企業級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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM