Docker Compose搭建LAMP环境
Posted rpish
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于Docker Compose搭建LAMP环境的主要内容,如果未能解决你的问题,请参考以下文章
利用docker-compose搭建LAMP+phpmyadmin环境
使用 docker compose 的最佳部署策略(LAMP 堆栈)