记录一些常用的函数和瞎折腾的过程……

在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