在本地服务器上公开docker容器

时间:2016-11-28 15:11:50

标签: node.js mongodb docker

我有一个在docker容器中运行的nodejs-mongo db应用程序。 我可以在localhost等上访问它......

但现在我想在本地服务器上安装/部署这些容器,以便我可以在网络外部访问此应用程序。 请注意我的服务器是Ubuntu 16.04.1 LTS(xenial)

此外,我想从外部访问Db,以便我可以使用自定义脚本将数据发送到Db。

我是网络和Docker的新手。因此,我很难理解需要做什么。任何指针都将不胜感激

这是docker-compose.yml

version: "2"
services:
    web:
        build: .
        volumes: # Use this to mount app from local disk
            - ./:/usr/src/app
        ports:
            - "8080:8080"
            - "5858:5858"
        entrypoint: node --debug=5858 app.js
        links:
            - mongo
    mongo:
        image: mongo
        ports:
            - "27017:27017"

这是我的Dockerfile

FROM node:argon

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 8080
CMD [ "npm", "start" ]

我用来启动容器的常用命令docker-compose up --build -d

以下是docker ps结果

"node --debug=5858 ap"   13 minutes ago      Up 13 minutes       0.0.0.0:5858->5858/tcp, 0.0.0.0:8080->8080/tcp   nodemongochart_web_1

"/entrypoint.sh mongo"   13 minutes ago      Up 13 minutes       0.0.0.0:27017->27017/tcp                         nodemongochart_mongo_1

1 个答案:

答案 0 :(得分:0)

如果通过本地服务器,你的意思是你自己的家里的机器,你需要做一些名为" Port Forwarding"。 它通常可以在您的路由器中配置,您可以通过以下某种链接访问您的应用程序:

http://you-personal-ip:8080

如果您要使用其他主机,而不是您自己的网络,他们应该为您提供IP地址,在这种情况下,不需要端口转发。