Невозможно настроить приложение с помощью Docker: серверная часть php, React для внешнего интерфейса, nginx для сервера Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно настроить приложение с помощью Docker: серверная часть php, React для внешнего интерфейса, nginx для сервера

Сообщение Anonymous »

Я Fullstack-разработчик, и мне нужно развернуть свое первое приложение с помощью Docker.
Мой стек — php/Symfony для серверной части, React/NextJS для внешнего интерфейса и MariaDB для базы данных. Я хотел использовать nginx для сервера.
Во-первых, мой интерфейс, кажется, работает с этой конфигурацией, поскольку переопределение правильное, и я могу получить доступ к своему веб-сайту через http:// my-app.com
Но когда я хочу отправлять запросы к своему серверу через интерфейс, я получаю ошибку CORS в Firefox (политика CORS Same Origin, без кода ошибки). Когда я хочу получить доступ к своему серверу через http://my-app.com:9000, как это было бы в dev, я получаю сообщение об ошибке: веб-сайт недоступен и т. д.
Значит, я здесь заблудился. Я думаю, что у меня может быть ошибка в моей конфигурации, но я не могу определить, где именно, и я застрял на этом несколько дней...
Вот мой файл docker-compose .yml:

Код: Выделить всё

services:
frontend:
build:
context: ./my-app-front
dockerfile: Dockerfile
container_name: my-app-front
ports:
- "3000:3000"
networks:
- bridge

backend:
build:
context: ./my-app-back
dockerfile: Dockerfile
container_name: my-app-back
volumes:
- backups:/var/backups/my-app
ports:
- "9000:9000"
networks:
- bridge
depends_on:
- db
environment:
DATABASE_URL: mysql://root:password@db:3306/db_name?serverVersion=mariadb-10.5.8

nginx:
image: nginx:stable-alpine
container_name: my-app-nginx
environment:
DATABASE_URL: mysql://root:password@db:3306/db_name?serverVersion=mariadb-10.5.8
ports:
- "80:80"
volumes:
- ./my-app/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- frontend
- backend
- db
networks:
- bridge

db:
image: mariadb:10.5.8
container_name: my-app-db
environment:
MYSQL_USER: root
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: db_name
volumes:
- db_data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- bridge

networks:
bridge:
driver: bridge

volumes:
db_data:
backups:
Вот моя конфигурация nginx:

Код: Выделить всё

server {
listen 80;
server_name my-app.com;

add_header 'Access-Control-Allow-Origin' 'http://my-app.com' always;
add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization, X-Requested-With, Accept' always;
add_header 'Access-Control-Allow-Credentials' 'true' always;

location / {
proxy_pass http://my-app.com:3000;
proxy_http_version 1.1;
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;
proxy_buffering off;
}

location /assets/ {
root /var/www/src/public;
try_files $uri $uri/ =404;
}

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Вот и все, ребята!
Если я смогу предоставить дополнительную информацию, я буду рад!
Я пробовал несколько вариантов конфигурации, пока не появился этот, и думаю, что проблема заключается в томах и пути к ним...

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

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

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

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

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

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

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