Сервис Docker не может загрузиться на незащищенный порт - PullRequest
4 голосов
/ 07 мая 2019

Я создал простой DOCKERFILE и построил из него образ «sample-image» внутри роя докеров, но всякий раз, когда я пытаюсь запустить контейнер, создавая сервис докера и выставляя его на соответствующем порту, но он не может загрузить в моем браузере. Пожалуйста, помогите

Сначала я инициализировал Docker Swarm и создал образ «sample-image» из dockerfile, после чего я создал оверлейную сеть «sample-network» внутри Swarm и создал сервис для запуска контейнера на нем "docker service create --name sample-service -p 8010:8001 --network sample-network sample-image". Служба создана, но не может загрузиться в браузере, поскольку я также включил свой UFW для порта 8010.

DOCKERFILE:

FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8001
CMD [ "npm", "start" ]

server.js:

'use strict';

const express = require('express');
const PORT = 8001;
const HOST = '0.0.0.0';
const app = express();

app.get('/', (req, res) => {
  res.send('Hello world\n');
});

app.listen(PORT, HOST);

console.log(`Running on http://${HOST}:${PORT}`);

Я ожидаю, что мой веб-браузер отобразит "Hello world" на незащищенном номере порта.

Ответы [ 3 ]

1 голос
/ 07 мая 2019

Не могли бы вы попробовать "curl -v http://127.0.0.1:8081" и вставить сюда вывод, пожалуйста? Также вы манипулировали ufw после запуска службы или dockerd?

1 голос
/ 07 мая 2019

Вы проверяли логи докера?Это должно дать вам то, что идет не так.

$ docker logs <containerid>
0 голосов
/ 07 мая 2019

Я думаю, что ваш порт прослушивания внутри докера - 8010, а внешний докер - 8001, вы можете попробовать изменить -p 8001:8001? если это работает, попробуйте -p 8001:8010.

...