Есть проект, в нем такая структура:
- core - (laravel проект)
- web - vue проект (с использованием vite)
- docker - папка с Dockerfile'ами
- docker-compose.yml
Что нужно:
localhost:80 - отображать фронтовой проект (тот что на vue)
core.localhost:80 - отображать бекендовский проект (тот который на laravel)
Что сделал:
создал default.conf
server { #
listen 80;
listen [::]:80;
server_name localhost;
location / {
proxy_pass http://project_web:8000;
}
}
server {
listen 80;
listen [::]:80;
server_name core.localhost;
root /var/www/core/public;
charset utf-8;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
location / {
try_files $uri /index.php?$query_string;
}
location ~\.php {
fastcgi_index index.php;
fastcgi_pass project_core:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
docker-compose.yml
version: '3'
services:
proxy:
build:
context: .
dockerfile: ./docker/proxy/Dockerfile
restart: always
ports:
- "80:80"
volumes:
- ./docker/proxy/conf.d:/etc/nginx/conf.d
- ./core:/var/www/core
depends_on:
- core
- web
container_name: project_proxy
core:
build:
context: .
dockerfile: ./docker/core/Dockerfile
volumes:
- ./core:/var/www/core
working_dir: /var/www/core
container_name: project_core
web:
build:
context: .
dockerfile: ./docker/web/Dockerfile
volumes:
- ./web:/var/www/web
working_dir: /var/www/web
command: npm run dev
container_name: project_web
В чем проблема:
Если с laravel я как то поборолся, то с фронтом не понимаю как это нужно сделать
Там запускается по команде
npm run dev
, но пока он запускается, nginx говорит что
nginx: [emerg] host not found in upstream "web"
Я пробовал добавлять в web command: npm run dev, но хоть и стоит depend_on, nginx умирает, а проект вроде как запускается, но его собственно не видно изза nginx'а
PS. Добавил restart: always, теперь nginx работает, но при заходе на страницу он выдает:
[error] 22#22: *5 connect() failed (111: Connection refused) while connecting to upstream, client: 172.19.0.1, server: localhost, request: "GET / HTTP/1.1", upstream: "http://172.19.0.2:8000/", host: "localhost"