2017-09-02 89 views
1

Dockerfile包含如何從docker中的已安裝卷運行bash腳本並將該端口暴露於容器外部?

FROM java:8 

蔭通過安裝我的主機目錄到搬運工運行此通過以下命令

docker run -it -p 8585:9090 -v ~/Docker/:/data d23bdf5b1b1b /data/bin/script.sh 

我能夠成功運行這一點,但問題是,當我嘗試從瀏覽器訪問它我無法看到任何東西,因爲端口衝突 ,2服務在同一端口上運行..

如何解決此問題?

+1

你給的信息是不夠的。請告訴哪個服務在哪個端口上運行,您如何運行這些服務,將這些服務歸屬於映像還是屬於您的系統 – Ayushya

+0

iam使用java的映像:8,iam運行java microservices –

回答

1

你的問題是你正試圖在一個新的容器中運行一個腳本,然後該容器就存在。它與正在運行的任何現有容器沒有任何關係。

另外,當你指定一個要用docker運行的命令時,它不會運行你在構建Dockerfile時定義的CMD命令。

所以你需要做的是以下。

docker run -d -p 8585:9090 -v ~/Docker/:/data d23bdf5b1b1b 

上述容器運行它將打印新的容器的ID之後。現在你想在這個新的容器中執行你的命令

docker exec -it <containerid> /data/bin/script.sh 
+0

非常感謝您的工作但碼頭運行命令即docker run -d -it -p 8585:9090 -v〜/ Docker /:/ data d23bdf5b1b1b有一點變化,我們必須同時使用-d和-it來啓動,否則它將會是立即退出 –

+0

然後你可能需要'-d -t'。 '-i'不應該需要 –

+0

另外我還有一個疑問是有可能使用dockerfile執行腳本本身,我的意思是沒有使用docker exec。我想運行安裝的卷中存在的腳本 –

相關問題