Я пытаюсь запустить nginx и php в docker-compose. Я могу создавать контейнеры, и когда я просматриваю html-файл в своем браузере, nginx обслуживает его. Но когда я пытаюсь просмотреть файл php, я просто получаю 502 Bad Gateway.
Я знаю, что это может быть как-то связано с именем сервера в моем файле конфигурации nginx, поскольку в учебнике, из которого я его получил, упоминается, что это должно быть правильно. Но я попытался изменить его на «localhost» и «ip-of-my-dockerhost» с тем же результатом.
Я также знаю, что я должен смотреть на файлы журнала. Однако я немного новичок в Linux. Когда я открываю Portainer, иду в контейнер под названием Web и запускаю оболочку, если я иду:
cd /var/log/nginx ; ls
Я вижу два файла с именами access.log и error.log.
однако, если я наберу
cat error.log
Ничего не произошло! Я получаю новую пустую строку с мигающим курсором, который никогда ничего не выводит. Затем оболочка «замораживается», пока я не нажму CTRL-C, чтобы завершить задачу.
Содержимое docker-compose.yml
version: "3.7"
#############################
#
# NETWORKS
#
#############################
networks:
main:
external:
name: main
default:
driver: bridge
###########################
#
# SERVICES
#
###########################
services:
# All services / apps go below this line
portainer:
container_name: Portainer
image: portainer/portainer:latest
restart: unless-stopped
command: -H unix:///var/run/docker.sock
networks:
- main
ports:
- "$PORTAINER_PORT:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- $DATADIR/portainer:/data # Change to local directory if you want to save/transfer config locally
environment:
- TZ=$TZ
<<snip as don't believe relevant - a bunch of other containers here such as influxdb, radarr etc>>
web:
container_name: Web
image: nginx:latest
networks:
- main
ports:
- 81:80
environment:
- PUID=$PUID
- PGID=$PGID
volumes:
- $CONFIGDIR/nginx/site.conf:/etc/nginx/conf.d/default.conf
- $DATADIR/nginx/code:/code
php:
container_name: php
image: php:7-fpm
networks:
- main
ports:
- 9090:9000
environment:
- PUID=$PUID
- PGID=$PGID
volumes:
- $CONFIGDIR/nginx/site.conf:/etc/nginx/conf.d/default.conf
- $DATADIR/nginx/code:/code
содержимое $CONFIGDIR/nginx/site.conf
server {
index index.php index.html;
server_name 192.168.1.7; ## This is the IP address of my docker host but I've also tried 'localhost' and 'php-docker.local'
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /code;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9090;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}






9090 - открытый порт. Это означает, что вы можете связаться с localhost:9090 для контейнера PHP, но не для внутренней связи контейнера.
Измените свой site.conf:
fastcgi_pass PHP: 9090; => fastcgi_pass php:9000;
Боже мой спасибо большое. Это сводило меня с ума уже около 24 часов, теперь ты мой герой <3