2016-11-28 37 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