簡體   English   中英

Dockerfile中的Nodejs端口變化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM