Docker Compose创建PHP生产环境容器
###docker-compose.yml文件内容如下
services:
nginx:
image: nginx:1.25.3-alpine3.18-perl
container_name: my-web-nginx
restart: always
depends_on:
- php
- mysql
- redis
volumes:
- ./nginx/html:/usr/share/nginx/html
- ./nginx/conf.d:/etc/nginx/conf.d
environment:
- TZ=Asia/Shanghai
ports:
- "80:80"
networks:
- myweb
php:
image: php:laravel
container_name: my-web-php
restart: always
volumes:
- ./nginx/html:/var/www/html
environment:
- TZ=Asia/Shanghai
networks:
- myweb
redis:
image: redis:7.2.3-alpine3.18
container_name: my-web-redis
restart: always
environment:
- vm.overcommit_memory=1
ports:
- "6379:6379"
networks:
- myweb
mysql:
image: mysql:8.2.0
container_name: my-web-mysql
command: '--default-authentication-plugin=mysql_native_password'
restart: always
secrets:
- mysql-password
volumes:
- ./mysql/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-password
- MYSQL_DATABASE=shucheng
- MYSQL_USER=shucheng_user
- MYSQL_PASSWORD=shucheng_password
ports:
- "3306:3306"
networks:
- myweb
volumes:
db-data:
name: my-web-data
networks:
myweb:
name: my-web-network
driver: bridge
external: true
secrets:
mysql-password:
file: mysql/password.txt
###./nginx/conf.d目录下创建index.conf文件,内容如下
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass my-web-php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
###mysql目录下创建password文件,内容为数据库密码
mysql/password.txt
docker compose up #-d 后台运行