Том Docker работает только в том случае, если все файлы совпадаютPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Том Docker работает только в том случае, если все файлы совпадают

Сообщение Anonymous »

Единственный способ заставить его работать, если я использую том привязки, который полностью соединяет оба контейнера, когда я его удаляю, он не работает. Без общего тома между интерфейсом и сервером они оба не смогут взаимодействовать. Они также оба находятся в одной сети.
ОБНОВЛЕНО без томов, файлов Docker, конфигурации nginx, примера вызова и сообщения об ошибке (второе обновление добавило прокси-сервер от nginx к php-fpm, который находится на порту). 9000)
Составить:
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
depends_on:
- api
links:
- api
develop:
watch:
- path: .
target: /var/www/html
action: sync

api:
build:
context: ./libs/php
dockerfile: Dockerfile
ports:
- "9000:9000"


Файлы Docker
FROM nginxinc/nginx-unprivileged

WORKDIR /var/www/html

COPY --chown=nginx:nginx ./conf.d/ /etc/nginx/conf.d/

COPY --chown=nginx:nginx . /var/www/html


FROM php:8.2-fpm

WORKDIR /var/www/html

ARG UID=101
ARG GID=101

//just updating user and group to same as nginx user on frontend
RUN groupadd -g "${GID}" php-fpm \
&& useradd --no-log-init -u "${UID}" -g "${GID}" php-fpm \
&& chown php-fpm:php-fpm -R /var/www/html

USER php-fpm

COPY --chown=php-fpm:php-fpm . .


Запрос сделан из сценария jquery:
$("#submit_1").on("click", () => {
const inputVal = $("#input_1").val();

$.ajax({
url: "/api/",
dataType: "json",
data: {
searchTerm: inputVal,
},
method: "POST",

success: (results) => console.log(results),
error: (obj, details) => console.log(obj, details),
});
}
});

Nginx default.conf
server {
index index.php index.html;
server_name api;
error_log /var/log/nginx/error.log debug;

root /usr/share/nginx/html;
index index.html index.htm;

location /api {
proxy_pass http://api:9000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

# Enable CORS headers
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods "POST, OPTIONS";
add_header Access-Control-Allow-Headers "Content-Type";
}

location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass api:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}


├── docker-compose.yaml
├── index.html
└── libs/
├── php/
│ ├── geocodeBackend.php # PHP files served by php-fpm
│ └── other_php_files.php
├── js/
│ └── jquery.js # JS, Css and html served by nginx
└── css/
└── styles.css

Ошибка:

web-1 | 2024/11/03 00:58:59 [ошибка] 30#30: *5 Recv() не удалось (104: Сброс соединения одноранговым узлом) при чтении заголовка ответа из восходящего потока, клиент: 172.18.0.1, сервер: API, запрос: «POST /api HTTP/1.1», восходящий поток: «http://172.18.0.2:9000/», хост: «localhost», реферер: «http://localhost/»


web-1 | 172.18.0.1 - - [03.11.2024:00:58:59 +0000] "POST /api HTTP/1.1" 502 157 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64; rv: 132.0) Gecko/20100101 Firefox/132.0" "-"

Контейнер PHP-FPM имеет свой файл
root@124743cd5330:/var/www/html# ls
Dockerfile geocodeBackend.php


У NGINX есть
root@b4eba721669f:/usr/share/nginx/html# ls
50x.html compose.dev.yaml favicon.ico libs
README.Docker.md conf.d index.html root


ОБНОВЛЕНИЕ (работает)
Благодаря правильному изменению файлов nginx default.conf и обновлению URL-адреса js-скрипта в /api/ (дополнительная косая черта в конце). Ниже указано все, что я изменил!
default.conf
server {
listen 8080;
index index.php index.html;
server_name api;
root /var/www/html/;

location /api/ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME geocodeBackend.php;
fastcgi_pass api:9000;
}
}

script.js
$.ajax({
url: "/api/",
dataType: "json",
data: {
searchTerm: inputVal,
},
method: "POST",


Подробнее здесь: https://stackoverflow.com/questions/791 ... iles-match
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»