基于Docker安装之Nginx、PHP环境和数据库
快速开始
docker-compose 文件如下:
version: '3'
services:
web:
image: wyveo/nginx-php-fpm:latest
ports:
- '80:80'
- '443:443'
restart: always
volumes:
- ./www:/usr/share/nginx/
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
depends_on:
- mysql
networks:
- web
mysql:
image: mysql:5.7
restart: always
ports:
- '3306:3306'
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/logs:/var/log/mysql
- ./mysql/conf:/etc/mysql/conf.d
env_file:
- mysql.env
networks:
- web
mongo:
image: mongo:4.4.3
volumes:
- ./mongdb/data/:/data/db
ports:
- '27017:27017'
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root # mongodb的用户名
MONGO_INITDB_ROOT_PASSWORD: root # mongodb的密码
networks:
- web
networks:
web:
这里我是将以前的php
镜像和nginx
镜像合并使用了一个wyveo/nginx-php-fpm:latest
镜像,并且打包了许多常用的 php 扩展。
因此如果跟你目前正在使用的有冲突,可能需要自己调整下。
在目录中创建
docker-compose.yaml
文件,并写入以上内容创建
mysql.env
(与docker-compose.yaml
同路径),并写入你的内容# MySQL的root用户默认密码,这里自行更改 MYSQL_ROOT_PASSWORD=你的root用户密码 # MySQL镜像创建时自动创建的数据库名称 MYSQL_DATABASE=自动创建的数据库 # MySQL镜像创建时自动创建的用户名 MYSQL_USER=自动创建的用户名 # MySQL镜像创建时自动创建的用户密码 MYSQL_PASSWORD=密码 # 时区 TZ=Asia/Shanghai
新建
nginx
目录在
nginx
目录新建文件nginx.conf
(nginx 的默认配置),并写入如下内容user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; client_max_body_size 50m; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 65; gzip on; include /etc/nginx/conf.d/*.conf; }
在
nginx
目录下新建conf.d
目录,并在conf.d
目录下新建文件default.conf
并写入如下内容server { listen 80; root /usr/share/nginx/; index index.php index.html index.htm; access_log /var/log/nginx/lsky_access.log main; location ~ \.php$ { # try_files $uri $uri/ /index.php?$query_string; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php8.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location / { try_files $uri $uri/ /index.php?$query_string; } }
接下来返回根目录(
docker-compose.yaml
同级目录),并新建www
文件夹在
www
文件夹中新建一个文件夹,并写入对应内容,此时访问服务器地址+文件夹名即可看到对应内容。数据库地址
输入
ifconfig
查看本机 ip 地址,并填入。例如我的就是
172.28.0.1
,数据库可以通过命令或者可视化工具链接后继续新建或者使用启动容器时创建的数据库。
注意
此系列文章中,我的所有配置文件都不会使用 ssl,因为我会用又拍云套用,在 cdn 端加入 ssl 证书。
这么做的原因主要是为了便于日后维护,这样就不需要每次证书过期后,申请很多证书然后在传入服务器,upyun 支持自动续期证书,因此个人使用的话我认为这是一个便捷高效的方案。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
ArtalkDisqusjs