2016-11-28 62 views
0

我有一个在docker容器内运行的nodejs-mongo数据库应用程序。 我可以访问本地主机等...在本地服务器上暴露码头容器

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

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

我是网络和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 
+0

您的dockerfile和docker-compose.yml看起来很稳固,应该可以工作。你的本地服务器放置在哪里?你如何访问它? –

+0

我已经配置了一台ubuntu机器。所以不知道它的设置。我正在使用ssh证书来访问它。如果有什么具体的东西知道这很有用,我可以问问谁给我这台机器 – katch

回答

0

如果通过本地服务器,你的意思是你自己的机器在家里,你需要做一些叫做“端口转发”的东西。 它通常是在你的路由器配置的,你就可以通过某种链接这样访问你的应用程序:

http://you-personal-ip:8080 

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

+0

在我们的办公室网络中的某个机器。我使用以下命令使用ssh访问'ssh -i @。我尝试使用http:// :8080访问应用程序。但在浏览器中打开时会“超时”。 – katch

+0

确保在该机器中可以访问端口8080。防火墙很有可能会阻止它(iptables) – HakRo