Приложение React, развернутое с помощью docker и nginx: /etc/nginx/conf.d/default.conf отличается от пакетов

#reactjs #docker #nginx #create-react-app

#reactjs #docker #nginx #create-react-app

Вопрос:

привет, у меня возникла проблема с развертыванием моего приложения React (создание приложения react) с использованием docker и nginx

образ успешно создан: с помощью следующего скрипта : docker build -t front --network=host .

каким образом, когда я пытаюсь запустить контейнер : docker run -p 3000:80 front

он не работает, и я получил следующее сообщение :

 10-listen-on-ipv6-by-default.sh: /etc/nginx/conf.d/default.conf differs from the packages version, exiting

  

мой файл docker :

 FROM node:12.19.0-alpine3.12 as build

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH
#ARG REACT_APP_BACKENDURL
#ENV REACT_APP_BACKENDURL $REACT_APP_BACKENDURL

# install and cache app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm ci
RUN npm install react-scripts@3.2.0 -g --silent
COPY . ./
RUN npm run build


# add app
#COPY . /app

# generate build
#RUN npm run  build

############
### test ###
############

# base image
FROM nginx:1.19.0-alpine

# copy artifact build from the 'build environment'
COPY --from=build /app/build /usr/share/nginx/html

#nginx config with react router
COPY  nginx/nginx.conf /etc/nginx/conf.d/default.conf

# expose port 80
EXPOSE 80

#COPY .env /usr/share/nginx/html

# run nginx
CMD ["nginx", "-g", "daemon off;"]

  

мой nginx.conf :

 
server {

  listen 3000;

  location / {
    root   /usr/share/nginx/html;
    index  index.html index.htm;
    try_files $uri $uri/ /index.html;
  }

  error_page   500 502 503 504  /50x.html;

  location = /50x.html {
    root   /usr/share/nginx/html;
  }

}
  

любые идеи, что я сделал не так, также я ищу рекомендации по развертыванию приложения REACT с помощью docker

Ответ №1:

Вы должны разделить dockefile выше на 2 dockerfile, один для внешнего изображения, один для nginx. Затем создайте оба образа. И 2 контейнера принадлежат этим изображениям.

Выставить dockerfile nodejs : 3000

И добавьте в файл конфигурации nginx: proxy_pass ip_address_nodejs_container:3000