У меня есть простое приложение Node.js / Express:
const port = 3000
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
Работает нормально, когда я запускаю его как: node src / app.js
Теперь я пытаюсь запустить его в контейнере Docker. Dockerfile - это:
FROM node:8
WORKDIR /app
ADD src/. /app/src
ADD package.json package-lock.json /app/
RUN npm install
COPY . /app
EXPOSE 3000
CMD [ "node", "src/app.js" ]
Все начинается отлично: docker run <my image>:
Listening on port 3000
Но теперь я не могу получить к нему доступ в своем браузере:
http://localhost:3000
This site can’t be reached localhost refused to connect.
То же самое произойдет, если я попытаюсь запустить его в docker-compose:
version: '3.4'
services:
service1:
image: xxxxxx
ports:
- 8080:8080
volumes:
- xxxxxxxx
myapp:
build:
context: .
dockerfile: Dockerfile
networks:
- private
ports:
- 3000
command:
node src/app.js
Не уверен, правильно ли я разбираюсь с портами в обоих файлах Docker