docker搭建php单站点(内网服务器)

docker-compose.yml添加内容:

services:
  nginx:
    image: nginx:stable
    ports:
      - "100.96.39.29:80:80"  # 绑定到内网IP的80端口
    volumes:
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
      - ./php:/var/www/html
    depends_on:
      - php
    networks:
      - wind-network #显示声明该docker的通信网络

  php:
    image: php:8.2-fpm
    volumes:
      - ./php:/var/www/html
    networks:
      - wind-network

networks:
  wind-network:
    driver: bridge

nginx配置文件内容:

server {
    listen 80;
    server_name wind.local;
    root /var/www/html/wind/public;
    index index.php index.html index.htm;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    # 静态文件缓存
    location ~* \.(jpg|jpeg|gif|png|css|js|ico|webp|svg)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

编辑 /etc/hosts,添加一行:

#内网IP  内网域名
100.96.39.29  wind.local 

 重启 Docker 服务:

# 该docker根目录下执行
docker compose down && docker compose up -d

如果需要内网域名访问站点,所有访问的电脑hosts都需要加上一下内容:

# Windows: C:\Windows\System32\drivers\etc\hosts
# Linux/Mac: /etc/hosts
100.96.39.29 wind.local

docker里安装php扩展:

# 进入php docker命令行(docker compose exec php bash),(安装扩展,例如pdo_mysql)
docker-php-ext-install pdo_mysql

其他:

# 进入nginx docker内部,其他类似,这里的nginx是docker-compose.yml里的server里的容器名称(nginx|php)
docker compose exec nginx bash
# 退出docker内部 输入exit或ctrl + D
# 查看所有docker容器运行状态
docker ps
# 查看当前目录docker运行状态
docker compose ps

上一篇
下一篇