gpt4 book ai didi

node.js - 如何使用 Shell 脚本重新启动 docker 服务

转载 作者:太空宇宙 更新时间:2023-11-04 02:05:05 27 4
gpt4 key购买 nike

  • 我有在 Docker 容器中运行的 Node 服务
    • 由于出现以下异常,服务在一段时间后停止。

events.js:141 抛出错误;//未处理的“错误”事件
错误:读取 ECONNRESET
在exports._errnoException(util.js:870:11)
在 TLSWrap.onread (net.js:544:26)

  • 我不知道为什么会出现此异常。
  • 我正在寻找可以在服务停止后重新启动服务的解决方案。
  • 我正在使用 shell 文件来运行这些服务,那么我是否可以在 shell 文件中添加一些内容来重新启动这个已停止的服务。

这是我的 shell 文件的示例:

#!/bin/bash
ORGANISATION="$1"
SERVICE_NAME="$2"
VERSION="$3"
ENVIRONMENT="$4"
INTERNAL_PORT_NUMBER="$5"
EXTERNAL_PORT_NUMBER="$6"
NETWORK="$7"
docker build -t ${ORGANISATION}/${SERVICE_NAME}:${VERSION} --build-arg PORT=${INTERNAL_PORT_NUMBER} --build-arg ENVIRONMENT=${ENVIRONMENT} --no-cache .
docker stop ${SERVICE_NAME}
docker rm ${SERVICE_NAME}

sudo npm install
sudo npm install -g express
docker run -p ${EXTERNAL_PORT_NUMBER}:${INTERNAL_PORT_NUMBER} --network ${NETWORK} --restart always --name ${SERVICE_NAME} -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}

这是我的 Dockerfile

FROM ubuntu

ARG ENVIRONMENT
ARG PORT

ENV PORT $PORT
ENV ENVIRONMENT $ENVIRONMENT

RUN apt-get update -qq
RUN apt-get install -y build-essential nodejs npm nodejs-legacy vim

RUN mkdir /database_service
ADD . /database_service
WORKDIR /database_service

RUN npm install -g path
RUN npm cache clean

EXPOSE $PORT

ENTRYPOINT [ "node", "server.js" ]
CMD [ $PORT, $ENVIRONMENT ]

提前致谢。

最佳答案

您可以使用docker run --restart always ...。然后Docker每次停止时都会重新启动容器。

该错误来自突然关闭的 TCP 连接,可能来自数据库或 Websocket。

我不知道为什么你在脚本中使用 npm,因为它位于容器之外。如果您希望将其安装在容器内,请将其添加到 Dockerfile 中的 RUN 中。

也许看看 docker-compose。有了它,您可以在 docker-compose.yml 文件中编写配置,然后只需使用 docker-compose up --build 即可获得与此脚本相同的功能。

关于node.js - 如何使用 Shell 脚本重新启动 docker 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44602519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com