1. Установить узел
- Пожалуйста, ознакомьтесь с руководством на официальном сайте Alibaba Cloud:Как быстро развернуть проект Node.js. (Примечание: работайте в корневом каталоге)
apt install nodejs
,apt install npm
Выполните два вышеуказанных именования для установки
После завершения установки выполните node -v
, npm -v
. Если версия появится, установка прошла успешно.
2. Создайте каталог проекта.
//如果当前目录在root
mkdir www2
mkdir www2/node
cd www2/node //进入项目目录
3. Создайте проект
1. Инициализировать проект
npm init -y
npm i koa -s
2. Создайте файл app.js.
const Koa = require('koa')
const app = new Koa()
app.use(ctx => {
ctx.body = 'Hello Docker'
})
app.listen(3000, () => {
console.log('app started at http://localhost:3000/')
})
3. Создайте файл конфигурации Dockerfile.
#Dockerfile
#制定node镜像的版本
FROM node:10-alpine
#移动当前目录下面的文件到app目录下
ADD . /app/
#进入到app目录下面,类似cd
WORKDIR /app
#安装依赖
RUN npm install
#对外暴露的端口
EXPOSE 3000
#程序启动脚本
CMD ["node", "app.js"]
Описание файла Dockerfile:
- ОТ узла: 10-альпийский:
- Используется официальный образ Node.js версии 10, основанный на Alpine Linux, облегченном дистрибутиве Linux.
- ДОБАВЛЯТЬ . /приложение/:
- Копирует все файлы из текущего каталога (кроме тех, которые указаны в .dockerignore) в каталог
/app/
контейнера.
- Копирует все файлы из текущего каталога (кроме тех, которые указаны в .dockerignore) в каталог
- РАБОЧИЙ ПАРАМЕТР/приложение:
- устанавливает рабочий каталог контейнера в
/app/
, что эквивалентно выполнениюcd /app
внутри контейнера.
- устанавливает рабочий каталог контейнера в
- ЗАПУСК установки npm:
- Выполните команду
npm install
в контейнере, чтобы установить зависимости, необходимые для приложения Node.js. Предполагается, что в вашем приложении есть файлpackage.json
и зависимости уже определены в этом файле.
- Выполните команду
- ЭКСПОЗИЦИЯ 3000:
- объявляет, что номер порта, который контейнер будет прослушивать при работе, равен 3000. Это всего лишь объявление, которое не сопоставляет порт с хостом автоматически. При запуске контейнера вам может потребоваться использовать параметр
-p
, чтобы сопоставить порт хоста с портом контейнера.
- объявляет, что номер порта, который контейнер будет прослушивать при работе, равен 3000. Это всего лишь объявление, которое не сопоставляет порт с хостом автоматически. При запуске контейнера вам может потребоваться использовать параметр
- CMD [“узел”, “app.js”]:
- определяет команду, которая будет выполняться при запуске контейнера. Здесь он запускается
node app.js
, предполагая, что файл ввода вашего приложения —app.js
. Это команда для запуска приложения Node.js.
- определяет команду, которая будет выполняться при запуске контейнера. Здесь он запускается
4. Бегите
# 定制镜像
docker build -t node:itfeiniu .
# 运行
docker run -p 8013:3000 -d node:itfeiniu
5. Описание каталога в контейнере
Согласно конфигурацииDockerfile
, после создания контейнера в корневом каталоге виртуальной машины будет создан каталог app
, и вы введет < a i=3> зависимости установки каталога. app
Вы можете видеть, что в корневом каталоге действительно существует каталог app
, а каталог app
содержит исходный код проекта, который мы хотим бегать.