我開始將我的項目移動到Docker容器,以便能夠在不依賴於我所使用的操作系統的情況下開發更多內容。Docker未正確綁定窗口上的端口
這是我跑我的容器方式:
docker run -d -v "$(pwd)/app:/app" -v "/c/Users/Geoffrey/Projects/go:/go" --name "server" --link mysql:mysql -p 127.0.0.1:3000:3000 my/server:latest
很快,我的程序執行的入口點啓動我去的應用程序,監聽端口3000
這裏是Dockerfile與此相關的容器:
##
## Author: Geoffrey Bauduin <[email protected]>
##
## Use Ubuntu 14.04
FROM ubuntu:trusty
MAINTAINER Geoffrey Bauduin <[email protected]>
ENV DEBIAN_FRONTEND noninteractive
RUN locale-gen en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
RUN echo "force-unsafe-io" > /etc/dpkg/dpkg.cfg.d/02apt-speedup
RUN echo "Acquire::http {No-Cache=True;};" > /etc/apt/apt.conf.d/no-cache
RUN echo $'#!/bin/sh\nexit 101' > /usr/sbin/policy-rc.d
RUN chmod +x /usr/sbin/policy-rc.d
## Installing gcc for go
RUN apt-get update && apt-get install -y --no-install-recommends \
g++ \
gcc \
libc6-dev \
make \
wget \
git \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
ENV GOLANG_VERSION 1.5.3
ENV GOLANG_DOWNLOAD_URL http://storage.googleapis.com/golang/go1.5.3.linux-amd64.tar.gz
RUN wget "$GOLANG_DOWNLOAD_URL" \
&& tar -C /usr/local -xzf go1.5.3.linux-amd64.tar.gz \
&& rm go1.5.3.linux-amd64.tar.gz
ENV GOPATH /go
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/bin/bash", "/entrypoint.sh"]
EXPOSE 3000
當我瀏覽http://localhost:3000
從我的windows主機,瀏覽器返回ERR_CONNECTION_REFUSED
,相同的東西127.0.0.1
,我的網絡地址(從ipconfig
返回),甚至容器地址(docker inspect server | grep IPAddress
)顯示相同的錯誤消息。 但是,當我在容器中執行/bin/bash
,然後執行curl localhost:3000
時,我可以看到服務器實際上正在預期的端口上運行。
有什麼我失蹤了嗎?就像爲什麼Docker無法綁定我的機器上的任何東西,但它不顯示任何錯誤消息?
任何幫助將不勝感激!