0
我上運行的基於節點的圖像泊塢窗容器(從Windows泊塢快速入門終端)訪問同胞服務
FROM node:7.8.0
ENV NPM_CONFIG_LOGLEVEL warn
VOLUME /tmp
#copy server source /piu contains node server and /piu/client contains react+redux client
ADD piu /piu
ADD server_start.sh/
#clean windows \r char to make the .sh file real executable
RUN sed -i -e 's/\r$//' server_start.sh
CMD ./server_start.sh
EXPOSE 3000 3009
我開始節點客戶端(3000端口)和節點(快遞爲主)服務器(在3009港口)。客戶端通過AJAX調用訪問REST服務器。
componentDidMount() {
const that = this;
console.log('SERVER_URL=' + SERVER_URL); //the output is localhost:3009
axios
.get(SERVER_URL + '/posts')
.then(res => {
that.setState({pageInfo: res.data});
})
.catch(err => {
console.log(err)
})
}
它從主機(客戶端訪問本地主機:3009並返回結果)完美的作品。我可以打電話:3009,並再次獲得正確的結果。
但是,當我建立並運行碼頭圖像失敗。
docker run -p 3000-3009:3000-3009 --add-host="mongodb:192.168.12.151" MyDockerImage
--add-host
用於訪問運行在主機上的mongo數據庫。
服務器端口3009暴露,所以我有一個工作招叫
192.168.99.100:3009 //the docker IP and exposed port
代替localhost:3009
,但會很高興地直接讓客戶端訪問服務器的容器內。
如何在Docker容器內正確指定localhost來訪問兄弟服務?
UPDATE
#!/bin/bash
# Start the first process (server)
npm run start_docker --prefix piu &
status=$?
if [ $status -ne 0 ]; then
echo "Failed to start my_first_process: $status"
exit $status
fi
# Start the second process (client)
npm run start --prefix piu/client
status=$?
if [ $status -ne 0 ]; then
echo "Failed to start my_second_process: $status"
exit $status
fi
問題不MongoDB的根本。我成功訪問了mongo。問題是從另一個訪問一個服務。兩者都在同一個容器中運行。我嘗試了docker-compose爲mongo建立了一個單獨的imkage鏈接,但沒關係。假設我根本沒有mongo。我需要的是從localhost:3000(都在同一個容器)調用localhost:3009 – StanislavL
'/ server_start.sh'的內容是什麼 –
該文件被添加 – StanislavL