の静的コンテンツを「ほとんど」まったく無駄に使い果たしていないため、「少し」問題に役立ちません。たぶん私は少し間違いを見た。Docker-ContainerのNginxはsymfony3-app
私はスリムな開発環境を持つためにsymfonyの3に基づいてアプリケーションを開発したい、私はこれらの3つのコンテナにドッキングウィンドウを使用しています:
- mysqlの(正常に動作します) :これは、ドッキングウィンドウ/ nginxの/ mysqlの-構成です
私のドッキングウィンドウ-compose.yml:
version: '3.0'
services:
nginx:
image: nginx:latest
depends_on:
- app
ports:
- '8080:80'
volumes:
- ./app/config/docker/nginx.conf:/etc/nginx/conf.d/default.conf
app:
build: .
depends_on:
- mysql
volumes:
- .:/var/www/html
- vendor:/var/www/html/vendor
mysql:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
- ./app/config/docker/mysql_character_set.cnf:/etc/mysql/conf.d/character_set.cnf
restart: always
ports:
- '6603:3306'
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: "test"
MYSQL_USER: "test"
MYSQL_PASSWORD: "test"
volumes:
db_data:
vendor:
マイnginx.conf:
server {
listen 80 default_server;
root /var/www/html/web;
index app_dev.php app.php;
location/{
# try to serve file directly, fallback to app.php
try_files $uri /app_dev.php$is_args$args;
}
# DEV
# This rule should only be placed on your development environment
# In production, don't include this and don't deploy app_dev.php or config.php
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log error;
}
マイDockerfile:ドキュメントルートの
FROM php:7.1-fpm
MAINTAINER [email protected]
ENV DEBIAN_FRONTEND=noninteractive
ENV PHP_DEPS="pdo pdo_mysql"
ADD . /var/www/html
# php extensions
RUN docker-php-ext-install $PHP_DEPS
# composer
RUN curl -sS https://getcomposer.org/installer | \
php -- --install-dir=/usr/local/bin --filename=composer && \
composer --version
# copy php-conf
COPY app/config/docker/fpm.conf /etc/php-fpm.d/autotrader.conf
CMD ["php-fpm"]
"のLS":
app.php
apple-touch-icon.png
config.php
image.png
robots.txt
app_dev.php
bundles
favicon.ico
navigation.css
私のブラウザで「http://localhost:8080/」を開くと、(ほぼ)すべて正常です。PHPが実行されており、ページが表示されます(エラーは表示されません)。 しかし、何が動作していない:nginxを介して "navigation.css"のような静的ファイルの提供。 Chromeのwebdeveloper-toolbarは、Network-Tabの中で、常に「404 Not Found」 - 「navigation.css」のメッセージを取得します。
http://localhost:8080/navigation.css私のブラウザで直接呼び出すと、Symfonyからエラーが表示されます。「GET /navigation.css」のルートが見つかりませんでした。
これは、nginxが "navigation.css"を見つけられず、このパラメータをsymfony(app_dev.php)に渡し、フレームワークが "navigation"という名前のルートを探していることを意味します。 css "は存在しません。
私の主な質問は、なぜnginxは静的ファイルを見ることができないのですか?つまり、静的ファイルと(提供される)phpファイルは同じディレクトリにあります。私は本当にこれを取得していない...うまくいけば、誰かが私の間違いを見ることができます。
あなたは大歓迎です:それはうまくいきました。あなたは親切に答えを受け入れ、上向きの矢印をクリックしてください。 @ User5518 – Sergiu
ありがとう! "docker-compose.yml"のnginxのこの新しい追加ボリューム構成では、動作しています: ' - 。/ web/static:/ var/www/html/web/static' – User5518
(静的ファイルを "web/static"に移動しました) – User5518