Я новичок в Docker, и мне интересно, могу ли я использовать Docker только в качестве среды приложения?
У меня есть Dockerfile
, который позволяет мне создавать образ Docker и позволяет другим товарищам по командеи сервер может запустить мой проект.
FROM node:10.15.3
ADD . /app/
WORKDIR /app
RUN npm install
RUN npm run build
ENV HOST 0.0.0.0
ENV PORT 3000
EXPOSE 3000
CMD ["npm", "run","start"]
Проект может быть собран и запущен.Все отлично.
Однако я обнаружил, что все файлы будут заархивированы в файлы изображений.Мой исходный код и все node_modules.Это делает файлы слишком большими.
И я помню, что в моем предыдущем проекте я создал виртуальную машину Linux и привязал папку своего проекта к гостевой ОС.Тогда я смогу продолжить разработку и использовать vm в качестве сервера.
Может ли Docker сделать что-то подобное?Докеру нужно только загрузить папку моего проекта (которая будет проходить путь при запуске команды).
Затем он запускает npm install
, npm start/dev
.Вся библиотека будет сохранена в моем локальном каталоге.ИЛИ Я запускаю npm start
вручную, затем докер загружает мои файлы и хост.
Мне просто нужно, чтобы докер был моим сервером приложений, чтобы быть уверенным, что я смогу получить тот же результат, что и при развертывании на Производственном сервере.
Может ли Docker это сделать?
============================== Обновить ================================
Я пытаюсь использовать для этого связывающее монтирование.Затем я создаю docker-compose
version: "3.7"
services:
web:
build: .
volumes:
- type: bind
source: C:\myNodeProject
target: /src/
ports:
- '8888:3000'
и обновляю dockerfile
FROM node:10.15.3
# Install dependencies
WORKDIR /src/
# I ran 'CMD ls' then confirm that the directory is blinded
# Expose the app port
EXPOSE 3000
# Start the app
CMD yarn dev
и получаю ошибку
web_1 | yarn run v1.13.0
web_1 | $ cross-env NODE_ENV=development nodemon server/index.js --watch server
web_1 | [nodemon] 1.18.11
web_1 | [nodemon] to restart at any time, enter `rs`
web_1 | [nodemon] watching: /src/server/**/*
web_1 | [nodemon] starting `node server/index.js`
web_1 | [nodemon] app crashed - waiting for file changes before starting...
index.js
const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()
// Import and Set Nuxt.js options
const config = require('../nuxt.config.js')
config.dev = !(process.env.NODE_ENV === 'production')
async function start() {
// Init Nuxt.js
const nuxt = new Nuxt(config)
const { host, port } = nuxt.options.server
// Build only in dev mode
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
} else {
await nuxt.ready()
}
// Give nuxt middleware to express
app.use(nuxt.render)
// Listen the server
app.listen(port, host)
consola.ready({
message: `Server listening on http://${host}:${port}`,
badge: true
})
}
start()