[英]Nodejs port change in Dockerfile
在 docker 容器中有一個 Node.js 應用程序,它在端口3149
上工作,但我需要容器在端口3000
上運行,我如何更改端口並在 Dockerfile 中注冊它而不更改應用程序代碼中的任何內容?
文件
COPY package*.json /
ADD id_rsa /root/.ssh/id_rsa
RUN chmod 600 /root/.ssh/id_rsa && \
chmod 0700 /root/.ssh && \
ssh-keyscan bitbucket.org > /root/.ssh/known_hosts && \
apt update -qqy && \
apt -qqy install \
ruby \
ruby-dev \
yarn \
locales \
autoconf automake gdb git libffi-dev zlib1g-dev libssl-dev \
build-essential
RUN gem install compass
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
locale-gen
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
COPY . .
RUN npm ci && \
node ./node_modules/gulp/bin/gulp.js client && \
rm -rf /app/id_rsa \
rm -rf /root/.ssh/
EXPOSE 3000
CMD [ "node", "server.js" ] ```
要讓容器在端口 3000 上運行,您必須在使用--port
或-p
選項/標志運行容器后指定此端口,並注意EXPOSE
不會發布端口:
EXPOSE 指令實際上並不發布端口。 它充當構建鏡像的人和運行容器的人之間的一種文檔,關於要發布哪些端口。 要在運行容器時實際發布端口,請使用 docker 上的 -p 標志發布和 map 一個或多個端口,或 -P 標志發布所有暴露的端口和 map 將它們發布到高階端口。
所以你必須從終端使用-p
選項運行容器:
docker run -p 3000:3149 ...
當您在主機上運行容器 map 端口 3000 到容器中的端口 3149 時,例如
docker run -p 3000:3149 image
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.