• Почему Nginx возвращает 404 для Docker контейнера с фронтенд? И почему не перенаправляет 404 на главную страницу?

    @ErichZann Автор вопроса
    Спасибо Lynn «Кофеман» за подсказку, что проблема была больше не на уровне хост машины Ubuntu, а в моем Vue приложении. Подправил Dockerfile и убрал command: "http-server dist" и все заработало

    Ниже исправленный Dockerfile

    FROM node:16.19.0 as build-stage
    
    # make the 'app' folder the current working directory
    WORKDIR /app
    
    # copy both 'package.json' and 'package-lock.json' (if available)
    # use slashes in copy because of error in `Github Action` build process
    COPY package*.json ./ 
    
    # copy project files and folders to the current working directory (i.e. 'app' folder)
    COPY . ./
    
    # install project dependencies
    RUN npm install
    
    # build the app
    RUN npm run build
    
    FROM nginx as production-stage
    COPY --from=build-stage /app/dist /usr/share/nginx/html
    COPY nginx.conf /etc/nginx/nginx.conf
    EXPOSE 80
    CMD ["nginx", "-g", "daemon off;"]


    Файл nginx.conf, который находится в корне фронтенд проекта (используется в Dockerfile выше):

    user  nginx;
    worker_processes  1;
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    events {
      worker_connections  1024;
    }
    http {
      include       /etc/nginx/mime.types;
      default_type  application/octet-stream;
      log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';
      access_log  /var/log/nginx/access.log  main;
      sendfile        on;
      keepalive_timeout  65;
      server {
        listen       80;
        server_name localhost;
        location / {
          root   /usr/share/nginx/html;
          index  index.html;
          try_files $uri $uri/ /index.html;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
          root   /usr/share/nginx/html;
        }
      }
    }


    Исправленная часть кода из `docker.compose`

    mag-frontend:
        container_name: mag-frontend
        restart: always
        build:
          context: ./mag-frontend
          dockerfile: Dockerfile
        ports:
          - "8080:80"
        depends_on:
            -mag-backend


    С этими изменениями все заработало, сразу в новом окне браузера открывается mydomain.com/employees . Единственное, что если ввести несуществующий маршрут mydomain.com/blahblah, то открывает не страницу 404 для Nginx, а пустую страницу сайта, но это понятно, надо будет самому создать компонент 404 для моего сайта.
    Ответ написан
    Комментировать
  • Какие книги есть для новичков по C# в 2020?

    @ErichZann
    (книги на английском)
    Как по мне один из лучших вариантов для новичков https://csharp-book.softuni.org/
    также неплохая книга https://www.amazon.com/C-Players-Guide-3rd/dp/0985...
    Ответ написан
    Комментировать