【问题标题】:2 processes on same port?2个进程在同一个端口?
【发布时间】:2017-05-24 02:56:11
【问题描述】:

我正在一个 docker 容器中运行一个节点应用程序。

这里是 dockerfile

FROM maven:3.3.3-jdk-8

#install node
RUN apt-get update
RUN apt-get -qq update
RUN apt-get install -y nodejs npm

# TODO could uninstall some build dependencies
RUN update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

# Install packages for envsubst
RUN apt-get update && apt-get upgrade -y --force-yes && rm -rf /var/lib/apt/lists/*;
RUN apt-get update
RUN apt-get install -y gettext-base


# Create app directory 
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# cache package.json and node_modules to speed up builds
COPY src src
COPY package.json package.json
#COPY node_modules node_modules
COPY pom.xml pom.xml
COPY Gruntfile.js Gruntfile.js
COPY gulpfile.js gulpfile.js
COPY settings.xml settings.xml

# Substitute dependencies from environment variables
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 8000

入口点.sh

#!/bin/sh

rm -rf /usr/src/app/src/js/app.js
envsubst < "/usr/src/app/src/js/envapp.js" > "/usr/src/app/src/js/app.js"
mvn clean  install -DskipTests -s settings.xml 
exec npm start

当我 ssh 进入容器时,我看到两个具有不同 PID 的进程在这个容器上运行

root@63387c253612:/usr/src/app# ps aux | grep '8000'
root       158  0.0  0.0   4332   648 ?        S    13:54   0:00 sh -c http-server -a 0.0.0.0 -p 8000
root       159  0.1  0.7 668520 15260 ?        Sl   13:54   0:00 node /usr/src/app/node_modules/.bin/http-server -a 0.0.0.0 -p 8000
root       168  0.0  0.0  12808   976 ?        S+   13:55   0:00 grep 8000

这是预期的吗?

【问题讨论】:

    标签: node.js docker pid npm-start


    【解决方案1】:

    这并不意味着它们都在监听 8000。这意味着它们有参数可以监听 8000。在这种情况下,有一个包装器 sh -c http-server ... 正在调用 node /usr/src

    您应该使用命令lsofnetstat 来查看实际打开的内容,或者签入/proc。

    【讨论】:

      猜你喜欢
      • 2013-06-17
      • 2011-01-06
      • 2012-07-21
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      相关资源
      最近更新 更多