Docker Compose搭建LAMP環境

最近買了《代碼審計 企業級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
相關文章
相關標籤/搜索