要在Docker中安装包含Nginx、MySQL和PHP的开发环境,可以使用docker-compose来定义多个容器服务。以下是一个基本的docker-compose.yml文件,它定义了三个服务:web(使用Nginx),php和db(使用MySQL)。
首先,确保你的系统中已经安装了Docker和Docker Compose。
/myapp
/www
index.php
/nginx
default.conf
docker-compose.yml
其中 /myapp 你的项目开发目录
在/myapp/www/index.php中,你可以添加PHP代码,比如:
<?php
echo json_encode(["message" => "Hello, World!"]);
在/myapp/nginx/default.conf中,配置你的Nginx服务器,例如:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
在/myapp/docker-compose.yml中定义你的服务:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./www:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- db
php:
image: php:fpm
volumes:
- ./www:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_DATABASE: mydatabase
MYSQL_USER: user
MYSQL_PASSWORD: user
MYSQL_ROOT_PASSWORD: rootpassword
ports:
- "3306:3306"
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
文件创建好后,启动你的服务。
docker-compose up -d
这个命令会根据docker-compose.yml文件启动三个服务:Nginx、PHP-FPM和MySQL。它会自动下载所需的Docker镜像,并在后台启动容器。
现在,你可以访问http://localhost:8080/index.php 来查看你的PHP应用程序。它应该显示一个JSON格式的”Hello, World!”消息。
如果你需要与MySQL数据库交互,可以在你的PHP脚本中使用PDO或mysqli来连接数据库,使用环境变量中定义的相同数据库凭证。
记得将数据库初始化脚本放在项目文件夹中,并通过Docker Compose进行加载,或者手动进入MySQL容器来导入数据库。
可能上面的docker-compose看不明白。这不重要,你的目标是搞定开发环境。只要跑起来能让你的开发顺畅的执行起来就ok了。至于docker的命令,可以稍后自己研究。