在docker中使用compose建立lnmp环境
使用docker-compose建立lnmp环境,方便快捷,一个命令就可以直接搞定。
以下内容需要注意:
1、服务 php:不需要端口映射,因为它仅通过内部网络与 Nginx 通信。在典型的 Nginx 和 PHP-FPM 设置中,不需要暴露 PHP-FPM 的端口。Nginx 和 PHP-FPM 通过内部 Docker 网络通信,Nginx 将请求通过 FastCGI 传递给 PHP-FPM。
2、服务 mysql:根据你的需求决定是否需要映射 MySQL 的端口。如果只需要容器间通信,不需要映射端口。如果需要从外部访问,则添加端口映射。
3、服务 nginx:必须进行端口映射,以便外部访问。
另外,将配置文件都映射到了宿主主机,这样方便修改配置。同时使用“-v /etc/localtime:/etc/localtime:ro”,将时间时区与宿主主机进行一致操作,方便日志的查看。
注意上述内容后,将下面的代码保存为docker-compose.yml,并放入对应目录,进入该目录后运行命令:
docker-compose up
即可在docker中建立lnmp环境。(yaml格式文件,请注意缩进和空格!)
其中,目录结构为:
LNMP/
├──docker-compose.yml
├──docker──nginx/
│ ├── Dockerfile
│ └── default.conf
├──docker──php/
│ ├── Dockerfile
│ └── php-fpm.conf
├──docker──mysql/
│ ├── DB
│ └── Dockerfile
├──docker──www/
│ └── index.php
└──docker──logs/
compose文件:
version: '1.0'
services:
nginx:
image: nginx:1.27.0
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- /lnmp/docker/nginx:/etc/nginx
- /lnmp/logs:/var/log/nginx
- /lnmp/www:/usr/share/nginx/html
- /lnmp/certs:/home/certs:ro
- /etc/localtime:/etc/localtime:ro
depends_on:
- php
networks:
- lnmp_Net
restart: always
php:
image: php:8.3-fpm
container_name: php
volumes:
- /lnmp/docker/php:/usr/local/etc
- /lnmp/www:/var/www/html
- /etc/localtime:/etc/localtime:ro
depends_on:
- mysql
networks:
- lnmp_Net
restart: always
mysql:
image: mysql:5.7.44
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: yourpassword
volumes:
- /lnmp/docker/mysql/DB:/var/lib/mysql
- /lnmp/docker/mysql/my.cnf:/etc/my.cnf
- /etc/localtime:/etc/localtime:ro
networks:
- lnmp_Net
restart: always
networks:
lnmp_Net:
name: lnmpNet
driver: bridge