Я бы пошел с Докером.Один контейнер с изображением узла, а другой - с изображением mysql.Контейнер узла запустит ваше угловое и экспресс-приложение.Также с Docker у вас не будет никакой разницы между вашей средой разработки и производственной средой.
У вас установлен Docker?Какую операционную систему вы используете?
Загрузка образа узла из Docker Hub:
docker pull node
Затем я бы создал Dockerfile, чтобы сгенерировать изображение из образа узла при копировании на него всего вашего исходного кода.
FROM node:latest
LABEL author="Your Name"
ENV NODE_ENV=production PORT=3000
COPY . /app
WORKDIR /app
RUN npm install
EXPOSE $PORT
ENTRYPOINT ["npm", "start"]
Команда COPY скопирует исходный код вашего текущего каталога (.) В каталог приложения внутри контейнера.WORKDIR установит контекст, в котором ваши команды будут выполняться внутри контейнера, чтобы вы могли запустить npm install там, где находится package.json.RUN загрузит все зависимости приложения внутри контейнера.ENTRYPOINT выполнит файл, который запустит ваше приложение, как указано в вашем файле package.json, как показано ниже:
"name": "app",
"version": "1.0.0",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"license": "ISC",
"dependencies": { ... }
.dockerignore (так что вы не копируете свои модули узлов, Dockerfile и т. Д. Внутри вашего контейнера):
node_modules
npm-debug.log
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore
README.md
LICENSE
.vscode
Чтобы создать образ на основе вышеупомянутого Dockerfile (вам нужно поместить Dockerfile и запустить сборку Docker в той же папке контейнера вашего приложения):
docker build -t image_name .
Toзапустите ваше изображение в Docker-контейнере:
docker run -d -p 3000:3000 image_name
Запустив такой контейнер, вы можете открыть свое приложение в браузере с помощью DOCKER_HOST_IP: PORT, и оно запустит ваше приложение.
Предполагая, что вызапускаем ваше приложение в PORT 3000, мы сопоставляем внешний порт 3000 с внутренним портом 3000 внутри контейнера, в котором запущено ваше приложение.
EXPRESS
Для экспресс-обслуживания ваших файлов,вам нужно установить express.static:
// serve client side code.
app.use('/', express.static('app_folder'));