Nginx
404 未找到 - Nginx - docker compose
這是一個非常標準的 docker 容器/設置
index.php``phpinfo();
僅對 docker compose的標準呼叫無法在瀏覽器中提供此文件嗎?Dockerfile
FROM php:7.4-fpm # Copy composer.lock and composer.json COPY composer.lock composer.json /var/www/ # Set working directory WORKDIR /var/www # Install dependencies RUN apt-get update && apt-get install -y \ build-essential \ libpng-dev \ libjpeg62-turbo-dev \ libfreetype6-dev \ locales \ libzip-dev \ zip \ jpegoptim optipng pngquant gifsicle \ vim \ unzip \ git \ curl # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* # Install extensions RUN docker-php-ext-install pdo_mysql zip exif pcntl #RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/ RUN docker-php-ext-configure gd --with-freetype --with-jpeg # PHP 7.4 ^^ RUN docker-php-ext-install gd # Install composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer # Add user for laravel application RUN groupadd -g 1000 www RUN useradd -u 1000 -ms /bin/bash -g www www # Copy existing application directory contents COPY . /var/www # Copy existing application directory permissions COPY --chown=www:www . /var/www # Change current user to www USER www # Expose port 9000 and start php-fpm server EXPOSE 9000 CMD ["php-fpm"]
docker-compose.yaml
version: '3' services: #PHP Service app_a: build: context: . dockerfile: Dockerfile image: digitalocean.com/php container_name: app_a restart: unless-stopped tty: true environment: SERVICE_NAME: app_a SERVICE_TAGS: dev working_dir: /var/www volumes: - ./:/var/www - ./php/local.ini:/usr/local/etc/php/conf.d/local.ini networks: - app-network #Nginx Service webserver_a: image: nginx:alpine container_name: webserver_a restart: unless-stopped tty: true ports: - "8211:80" - "443:443" volumes: - ./:/var/www - ./nginx/conf.d/:/etc/nginx/conf.d/ networks: - app-network #MySQL Service db_a: image: mysql:5.7.22 container_name: db_a restart: unless-stopped tty: true ports: - "3236:3306" environment: MYSQL_DATABASE: my_local MYSQL_ROOT_PASSWORD: password SERVICE_TAGS: dev SERVICE_NAME: mysql volumes: - dbdata:/var/lib/mysql - ./mysql/my.cnf:/etc/mysql/my.cnf networks: - app-network #Docker Networks networks: app-network: driver: bridge #Volumes volumes: dbdata: driver: local
所有 docker 服務容器都執行良好,例如,我可以在 shell 上登錄它們
docker exec -it 3a234d1f384e sh
。如果你能幫助我在瀏覽器中提供文件?那太好了。提前致謝。
編輯
/nginx/conf.d/app.conf
server { listen 80; index index.php index.html; error_log /var/log/nginx/error.log; access_log /var/log/nginx/access.log; root /var/www/public; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass app_a:9000; 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; gzip_static on; } }
對於我上面的特定設置。我認為我的錯誤是
index.php
需要在public
文件夾內並從那裡提供。