Я пытаюсь сделать две вещи
- Создать базовое приложение типа "hello world", используя Node / Express.js.
- Разместите это приложение в докере (сейчас у меня в локальной системе Mac OS)
Вот что у меня в папке:
root of application
-> node_modules
-> .dockerignore
-> Dockerfile
-> index.js
-> package-lock.json
-> package.json
Мой Dockerfile:
FROM node:lts
WORKDIR "/app"
COPY package.json /app/
RUN cd /app; npm install
COPY . /app
EXPOSE 8888
CMD ["node", "index.js"]
Мой index.js:
const express = require('express')
const app = express()
const port = 8888
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
Мой package.json:
{
"name": "my-software",
"version": "1.0.0",
"description": "My Software",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Me",
"license": "ISC",
"dependencies": {
"express": "^4.16.4"
}
}
Мой .dockerignore:
node_modules/
Это то, что я делаю, чтобы попытаться запустить его.
1) Сначала я проверяю, что мое экспресс-приложение работает независимо, запустив npm install
, а затем node index.js
.Я вижу, что он работает и доступен в браузере на localhost: 8888.
2) После запуска docker build .
я получаю что-то вроде этого:
Sending build context to Docker daemon 18.94kB
Step 1/7 : FROM node:lts
---> 75a3a4428e1d
Step 2/7 : WORKDIR "/app"
---> Using cache
---> 57a5a3028928
Step 3/7 : COPY package.json /app/
---> Using cache
---> 74939286881b
Step 4/7 : RUN cd /app; npm install
---> Using cache
---> f7e142ba9040
Step 5/7 : COPY . /app
---> Using cache
---> ea7cc365795d
Step 6/7 : EXPOSE 8888
---> Using cache
---> 82297fe77ca8
Step 7/7 : CMD ["node", "index.js"]
---> Using cache
---> e2fb0c6c00a3
Successfully built e2fb0c6c00a3
3) После этого язапустите docker run e2fb0c6c00a3
(используя хэш того, что было построено на шаге 2)
Примечание: в консоли все выглядит так, как будто оно работает.Я вижу сообщение "Пример приложения, прослушивающего порт 8888!"но когда я перезагружаю locahost: 8888 в браузере, я ничего не получаю.Что мне здесь не хватает?