#docker #nginx
Вопрос:
У меня есть приложение react. Поэтому я использовал приведенный ниже файл Dockerfile для создания образа docker
# pull official base image
FROM node:12.13.0-alpine AS build
# STAGE 1
WORKDIR /app
COPY package.json ./
RUN yarn install
COPY . /app
RUN yarn build
# STAGE 2
FROM nginx:stable-alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
И серверная часть работает на x.x.x.x:4004.
Теперь я запускаю свое приложение react.
Вызовы сервера не работают, он показывает 404.
Как я могу подключиться к серверной части к серверу Nginx. Любая помощь будет признательна!
Комментарии:
1. Какой URL-адрес вы используете для вызова серверной части из своего приложения react?
2. http:xx.xxx.xxx.xx:4004 Я использую этот тип URL-адреса. Это также образ докера, работающий на порту 4004.
3. Я думаю, что это может быть связано с CORS, так как вы загружаете приложение react с другого сайта, чем ваш API. Можете ли вы проверить, принимает ли ваш API все исходные данные?
Ответ №1:
Запросите у контейнера docker IP-адрес docker inspect (containerNameOrId)
В вашем файле dockerfile вам необходимо предоставить порты для обоих контейнеров для связи друг с другом.
например, EXPOSE 80/tcp
Если это было за пределами docker, вам нужно опубликовать порт. При запуске контейнера с
docker run -p 80:80 (other parameters)
в приведенном выше примере порт 80 контейнерного порта сопоставлен с портом 80 хоста
Проверьте, что с хостов контейнеров docker вы можете выполнить пинг вашего сервера nginx, а с сервера nginx — на хосты контейнеров docker. если вы не можете, проверьте настройки брандмауэра.
Комментарии:
1. На самом деле приложение React и серверный сервер работают в docker с помощью команды docker run. И это работало до использования сервера nginx, почему, потому что я дал прокси в приложении react файла package.json