Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Docker容器退出,代码为2,通过Gitlab CI/CD管道将节点应用程序部署到Digital Ocean_Node.js_Docker_Express_Gitlab_Gitlab Ci Runner - Fatal编程技术网

Node.js Docker容器退出,代码为2,通过Gitlab CI/CD管道将节点应用程序部署到Digital Ocean

Node.js Docker容器退出,代码为2,通过Gitlab CI/CD管道将节点应用程序部署到Digital Ocean,node.js,docker,express,gitlab,gitlab-ci-runner,Node.js,Docker,Express,Gitlab,Gitlab Ci Runner,大家早上好, 我正在尝试通过Gitlab CI/CD管道将我的节点应用程序部署到Digital Ocean。管道已成功部署,但容器已退出,代码为(2)。我的节点应用程序使用端口3000。我正在使用pm2来运行服务器,但对不使用pm2持开放态度。下面是我的docker文件和.yml文件 #ssh-keyscan gitlab.com>>授权密钥:使用此命令将gitlab-ssh密钥添加到服务器。在服务器终端上运行 #cat id_rsa.pub>>授权密钥在终端服务器上运行此命令。 #以上两个命

大家早上好, 我正在尝试通过Gitlab CI/CD管道将我的节点应用程序部署到Digital Ocean。管道已成功部署,但容器已退出,代码为(2)。我的节点应用程序使用端口3000。我正在使用pm2来运行服务器,但对不使用pm2持开放态度。下面是我的docker文件和.yml文件

#ssh-keyscan gitlab.com>>授权密钥:使用此命令将gitlab-ssh密钥添加到服务器。在服务器终端上运行
#cat id_rsa.pub>>授权密钥在终端服务器上运行此命令。
#以上两个命令都是必需的。
阶段:
-建造
-发表
-部署
变量:
TAG_LATEST:$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:LATEST
TAG_COMMIT:$CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA
生成节点:
图像:节点:最新
阶段:建造
脚本:
-npm安装
-echo“ACCOUNT\u SID=$ACCOUNT\u SID”>>.env
-echo“AUTH_TOKEN=$AUTH_TOKEN”>.env
-echo“API_KEY=$API_KEY”>>.env
-echo“API_SECRET=$API_SECRET”>>.env
-echo“PHONE\u NUMBER=$PHONE\u NUMBER”>>.env
-echo“sengrid\u api=$sengrid\u api”>.env
构建Docker:
图片:docker:最新
阶段:建造
服务:
-码头工人:丁
脚本:
-docker build-t$TAG\u提交-t$TAG\u最新版本
-docker登录-u gitlab ci令牌-p$ci\u构建\u令牌$ci\u注册表
-docker推送$TAG_提交
-docker推送$TAG_最新版本
部署:
图片:ubuntu:最新版本
阶段:部署
标签:
-部署
在脚本之前:
-'哪个ssh代理| |(apt get update-y&&apt get install openssh client git-y)'
-eval$(ssh代理-s)
-mkdir-p~/.ssh
-chmod 700~/.ssh
-echo“$SSH\u PRIVATE\u KEY”| tr-d'\r'>~/.SSH/id\u rsa
-echo“$SSH\u PUBLIC\u KEY”| tr-d'\r'>~/.SSH/id\u rsa.pub
-chmod 600~/.ssh/*
-chmod 644~/.ssh/*.pub
-ssh添加
-ssh keyscan gitlab.com>~/.ssh/known\u主机
-chmod 644~/.ssh/known_主机
-ls-ld~/.ssh/*
脚本:
-ssh-o strichostkeychecking=no$SERVER\u USER@$SERVER\u IP“docker登录-u gitlab ci令牌-p$ci\u构建令牌$ci\u注册表”
-ssh-o strichostkeychecking=no$SERVER\u USER@$SERVER\u IP“docker pull$TAG\u COMMIT”
-ssh-o strichostkeychecking=no$SERVER_USER@$SERVER_IP“docker容器rm-f my app|true”
-ssh-o strichostkeychecking=no$SERVER\u USER@$SERVER\u IP“docker run-d-p 80:3000--命名我的应用程序$TAG\u COMMIT”
环境:
名称:生产
网址:http://167.172.225.124
仅:
-母版
来自节点:12.18.3
#将起始目录设置为当前目录
WORKDIR/
#复制Package.json
复制包*.json/
#在应用程序中安装依赖项
运行npm安装
#安装pm2
运行npm安装pm2-g
#复制源代码
复制
#让docker容器使用端口3000,即节点应用程序设置的端口
暴露3000
#启动节点应用程序
CMD[“pm2运行时”,“/bin/www”]

我将echo语句放在docker build阶段的dock build命令之前。我没有使用工件。

当容器死亡时,日志会从容器中显示什么?错误:新Twilio(/node\u modules/Twilio/lib/rest/Twilio.js:132:11)需要用户名。此错误意味着没有传递我的api密钥,但我的.env文件在我的应用程序文件夹中。.yml文件的一部分是创建.env文件。我不知道为什么.env文件在我的容器中不存在。我在-d标志前面的docker运行行中添加了--env file.env,它说“docker:open.env:没有这样的文件或目录。”