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 后台运行

, , , , ,