запуск реакции и узла в одном файле docker без файла docker-compose.yml - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть пример проекта с использованиемactjs, а nodejs ниже - это структура папок.

movielisting
   Dockerfile
   client
     package.json
     package.lock.json
     ... other create-react-app folders like src..
   server
     index.js

Я запускаю этот проект с помощью npm run start - папка клиента и nodemon index.js - папка сервера.Все мои API написаны в папке сервера.Мой клиент работает в порту 3000, а сервер работает в порту 4000, я добавил прокси в package.json клиента, как показано ниже

"proxy": "http://localhost:4000"

Итак, чего я пытаюсь добиться в Dockerfile, так это того, что я хочу начатьприложение, запустив этот Dockerfile

1) i need to create the build of client by running npm run build
2) copy to the workdir inside the container
3) copy all server folder
4) npm install for the server folder
5) proxy the application

Как я могу это сделать?если мне нужно написать некоторый код в nodejs для обслуживания файла build index.html

также, как я могу запустить команду Dockerfile для запуска приложения.

Любая помощь приветствуется !!!

1 Ответ

0 голосов
/ 26 февраля 2019

Для того, чтобы объединить внешний и внутренний интерфейсы в одно изображение.вам нужно сделать следующее:

Для внешнего приложения оно должно быть построено, чтобы служить статическим файлом

Для внутреннего приложения оно должно быть запущено внутри контейнера иоткрыто, так что веб-интерфейс может получить доступ к нему из браузера, так как использование localhost:4000 в конечном итоге вызовет локальный хост пользователя, а не локальный хост контейнера

Наконец, вам нужно использовать что-то вроде supervisor в качестве менеджера сервисов для запуска несколькихсервис в одном контейнере.Возможно, вам придется проверить следующие

В качестве примера вы можете проверить следующее:

FROM node:10.15.1-alpine

COPY . /home/movielisting
#Prepare the client
WORKDIR /home/movielisting/client
RUN npm install --no-cache && npm run build && npm install -g serve

#Prepare the server
WORKDIR /home/movielisting/server
RUN npm install --no-cache

EXPOSE 4000 

CMD [ "npm", "start", "index.js" ]

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...