我對 docker 非常陌生,并嘗試使用多個服務/應用程式構建 docker compose,還單獨設定日志檔案位置。
如果我跑docker compose up會導致open() file error類似
FPM-nginx | 2022/10/06 01:40:54 [emerg] 1#1: open() "/var/www/FPM/log/nginx/error.log" failed (2: No such file or directory)
FPM-nginx | nginx: [emerg] open() "/var/www/FPM/log/nginx/error.log" failed (2: No such file or directory)
根據相對答案,我嘗試添加新命令Dockerfile但仍然導致錯誤。
答案試過 Nginx 訪問日志檔案路徑
答案嘗試了 2 Nginx 日志位置
目前Dockerfile docker-compose.yml nginx.conf如下
Dockerfile
FROM php:8.0.2-fpm
RUN mkdir -p /var/www/FPM/log/nginx/ \ <<<<<<<<< This is new add
touch /var/www/FPM/log/nginx/error.log \ <<<<<<<<< This is new add
touch /var/www/FPM/log/nginx/access.log \ <<<<<<<<< This is new add
apt-get update && apt-get install -y \
git \
curl \
zip \
unzip
WORKDIR /var/www/FPM
nginx.conf
server {
listen 80;
index index.php;
root /var/www/FPM/public;
error_log /var/www/FPM/log/nginx/error.log;
access_log /var/www/FPM/log/nginx/access.log;
error_page 404 /index.php;
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
}
docker-compose.yml
version: "3.8"
services:
app:
build:
context: ./
dockerfile: Dockerfile
container_name: FPM-app
restart: always
working_dir: /var/www/FPM
volumes:
- ../src:/var/www/FPM
nginx:
image: nginx:1.23.1-alpine
container_name: FPM-nginx
restart: always
ports:
- 8000:80
volumes:
- ../src:/var/www/FPM
- ./nginx:/etc/nginx/conf.d
我也試過地方
error_log /var/www/FPM/log/nginx/error.log;
access_log /var/www/FPM/log/nginx/access.log;
下location /但仍然導致錯誤
location / {
error_log /var/www/FPM/log/nginx/error.log;
access_log /var/www/FPM/log/nginx/access.log;
}
uj5u.com熱心網友回復:
您的 docker 和 docker-compose 檔案存在多個問題。
根據您的 docker-compose.yml,當您執行此操作時,您將docker-compose up運行兩個容器,一個從當時構建的 docker 映像啟動,另一個從公共nginx:1.23.1-alpine映像啟動。構建的第一個影像將包含/var/www/FPM/log/nginx/檔案夾以及error.log檔案access.log,但docker-compose up由于以下行將覆寫內容:
volumes:
- ../src:/var/www/FPM
話雖如此,您甚至不需要該檔案夾和第一個 ( app) 容器中的那些檔案。您需要它們在nginx容器中。因此,您可以從 Dockerfile 中洗掉這些行:
mkdir -p /var/www/FPM/log/nginx/ \
touch /var/www/FPM/log/nginx/error.log \
touch /var/www/FPM/log/nginx/access.log \
相反,請在您的目錄中創建error.log并access.log在您的src目錄中,或者如果您src/log/nginx/為了簡潔起見選擇在位置。并將這些檔案掛載到您的 docker compose 檔案中。
version: "3.8"
services:
app:
build:
context: ./
dockerfile: Dockerfile
container_name: FPM-app
restart: always
working_dir: /var/www/FPM
volumes:
- ../src:/var/www/FPM
nginx:
image: nginx:1.23.1-alpine
container_name: FPM-nginx
restart: always
ports:
- 8000:80
volumes:
- ../src:/var/www/FPM
- ../src/nginx/logs/error.log:/var/www/FPM/log/nginx/error.log;
- ../src/nginx/logs/access.log:/var/www/FPM/log/nginx/access.log;
- ./nginx:/etc/nginx/conf.d
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/511179.html
標籤:php码头工人nginx
