如何使用Shell脚本重新启动docker服务

时间:2017-06-17 08:41:59

标签: node.js shell docker sh docker-compose

  • 我有一个在Docker容器中运行的<SeekBar android:thumb="@drawable/seekbar_thumb_drawable" android:progressDrawable="@drawable/seekbar_drawable" android:layout_width="match_parent" android:layout_height="wrap_content" android:maxHeight="1000dp" <!-- OR --> android:maxHeight="16dp" android:minHeight="16dp"/> 服务
    • 以下异常服务会在一段时间后停止。

Node

  • 我不知道为什么会出现这种异常。
  • 我正在寻找可以在停止后重启服务的工作。
  • 我正在使用events.js:141 throw er; // Unhandled 'error' event Error: read ECONNRESET at exports._errnoException (util.js:870:11) at TLSWrap.onread (net.js:544:26)文件来运行这些服务,所以我可以在shell文件中添加一些可以重启此停止服务的内容。

以下是我的shell文件示例:

shell

这是我的Dockerfile

#!/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}

提前致谢。

1 个答案:

答案 0 :(得分:0)

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

错误来自突然关闭的tcp连接,可能来自数据库或websocket。

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

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