services: nginx: image: nginx volumes: - /Users/zilong/docker-compose/nginx/html:/usr/share/nginx/html:rw - /Users/zilong/docker-compose/nginx/conf/nginx.conf:/etc/nginx/nginx.conf - /Users/zilong/docker-compose/nginx/conf.d:/etc/nginx/conf.d - /Users/zilong/docker-compose/nginx/logs:/var/log/nginx restart: always container_name: nginx_compose links: - "php" ports: - "80:80" networks: lnmp: ipv4_address: "6.6.0.10" php: image: "php:7.4-fpm" volumes: - /Users/zilong/docker-compose/nginx/html:/www - /Users/zilong/docker-compose/php/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf - /Users/zilong/docker-compose/php/conf/php.ini:/usr/local/etc/php/php.ini command: php-fpm container_name: php_compose restart: always ports: - "9000:9000" links: - "mysql" - "redis" networks: lnmp: ipv4_address: "6.6.0.60" redis: image: redis volumes: - /Users/zilong/docker-compose/redis/data:/data - /Users/zilong/docker-compose/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf command: redis-server /usr/local/etc/redis/redis.conf restart: always container_name: redis_compose ports: - "6379:6379" networks: lnmp: ipv4_address: "6.6.0.20" mysql: image: mysql:5.7 volumes: - /Users/zilong/docker-compose/mysql/data:/var/lib/mysql - /Users/zilong/docker-compose/mysql/conf:/etc/mysql - /Users/zilong/docker-compose/mysql/logs:/var/log/mysql environment: MARIADB_ROOT_PASSWORD: "123456" restart: always container_name: mysql_compose ports: - "3306:3306" networks: lnmp: ipv4_address: "6.6.0.30" networks: lnmp: ipam: driver: default config: - subnet: "6.6.0.0/16"
按照网上教程,安装了Lnmp环境,会出现神奇的情况,html能够正常访问,但是php文件就是不行。
location ~ \.php$ { root html; fastcgi_pass php_compose:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; }
如上代码,有两点注意: fastcgi_pass, 这里默认是127.0.0.1,这里可以改为php_compose或者php_compose的容器IP。
fastcg_param 的SCRIPT_FILENAME,这里有坑的,默认是 /scripts,需要改为 php对的volumes, 上面我用了/www,所以这边用了www,php代码的解析是在php容器内完成的。