最近買了《代碼審計 企業級WEB代碼安全架構》這本書,想要測試一下里面的一些漏洞,可是又不想弄髒個人工做環境,因而便學習了一下怎樣用Docker來搭建LAMP環境。php
先建個文件夾,用來存咱們接下來的文件。html
mkdir lamp cd lamp/
而後寫php-apache的dockerfile。 本身寫,不直接用image的緣由是直接用image沒裝mysqli插件,連不上數據庫。mysql
touch Dockerfile vi Dockerfile
FROM php:apache RUN docker-php-ext-install mysqli EXPOSE 80
接着就能夠開始寫docker-compse了(有的裝docker會自帶,沒有的話手動裝下就好)。web
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
檢查一下有沒有問題。sql
docker-compose config
而後就能夠運行了。docker
docker-compose up
也能夠加上-d參數讓它在後臺運行。數據庫
docker-compose up -d
接着就能夠到php目錄下寫咱們的php代碼了。 (php目錄的owner是root,因此得先切換下owner,不然沒有權限進行寫操做。)apache
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,成功。bash
最後記一下我遇到的一個問題,就是鏈接docker的守護進程須要權限,因此每次都要加上sudo才能執行命令。 解決辦法就是把用戶加進docker組.
sudo useradd -aG docker $USER newgrp docker