У меня есть следующие файлы:
Dockerfile
* * 1004
FROM node:8
# Create app directory
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "npm", "start" ]
server.js
'use strict';
const express = require('express');
// Constants
const PORT = 8080;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('Hello world\n');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
package.json
:
{
"name": "docker_web_app",
"version": "1.0.0",
"description": "Node.js on Docker",
"author": "First Last <first.last@example.com>",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"express": "^4.16.1"
}
}
.dockerignore
:
node_modules
npm-debug.log
Затем я создаю образы Docker:
docker build -t nodeapp -f ./Dockerfile .
Работает, изображение создано. Затем я запускаю его:
docker run -p 49160:8080 -d nodeapp
И следующее:
docker exec -it <container id> /bin/bash
Если я наберу curl -i localhost:49160
, я получу Failed to connect to localhost port 49160: Connection refused
.
Тем не менее, если я наберу curl -i localhost:8080
это нормально:
HTTP/1.1 200 OK
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 12
ETag: W/"c-M6tWOb/Y57lesdjQuHeB1P/qTV0"
Date: Wed, 06 Mar 2019 23:20:41 GMT
Connection: keep-alive
Hello world
Тем не менее, я не могу получить localhost:8080
(ни localhost:49160
) в Chrome на моей исходной системе, т. Е. Вообще из Docker.
Можно ли запускать закрепленные приложения в браузерах? Как это исправить, чтобы заставить его работать?
EDIT
1) Я должен был проверить IP-адрес с docker-machine ip
2) перейдите на : 49160