首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sh: ng:部署时未找到命令无法在openshift上执行启动脚本

在 OpenShift 上部署 Angular 应用时,如果遇到 sh: ng: command not found 错误,通常是因为在启动脚本中找不到 ng 命令。以下是解决这个问题的步骤:

1. 确保在 Dockerfile 中安装 Angular CLI

如果你使用 Dockerfile 来构建和部署应用,确保在 Dockerfile 中全局安装了 Angular CLI。

代码语言:javascript
复制
# 使用官方的 Node.js 镜像作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装项目依赖
RUN npm install

# 全局安装 Angular CLI
RUN npm install -g @angular/cli

# 复制项目文件
COPY . .

# 构建 Angular 应用
RUN ng build --prod

# 暴露应用端口
EXPOSE 80

# 启动应用
CMD ["npx", "http-server", "dist/your-app-name"]

2. 确保在 OpenShift 构建配置中安装 Angular CLI

如果你使用 OpenShift 的构建配置(BuildConfig),确保在构建过程中安装 Angular CLI。

示例:使用 S2I 构建

如果你使用 Source-to-Image (S2I) 构建,确保在 .s2i/bin/assemble 脚本中安装 Angular CLI。

代码语言:javascript
复制
#!/bin/bash

# 安装项目依赖
npm install

# 全局安装 Angular CLI
npm install -g @angular/cli

# 构建 Angular 应用
ng build --prod

3. 确保在启动脚本中使用正确的命令

在 OpenShift 的部署配置(DeploymentConfig)中,确保使用正确的启动命令。如果你在 Dockerfile 中已经构建了应用,可以使用 npx http-server 来启动应用。

示例:DeploymentConfig

代码语言:javascript
复制
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  name: your-app-name
spec:
  replicas: 1
  selector:
    app: your-app-name
  template:
    metadata:
      labels:
        app: your-app-name
    spec:
      containers:
        - name: your-app-name
          image: your-docker-image
          ports:
            - containerPort: 80
          command: ["npx", "http-server", "dist/your-app-name"]
  triggers:
    - type: ConfigChange
    - type: ImageChange
      imageChangeParams:
        automatic: true
        containerNames:
          - your-app-name
        from:
          kind: ImageStreamTag
          name: 'your-docker-image:latest'

4. 确保环境变量正确

有时,环境变量可能会影响命令的执行。确保在 OpenShift 中设置了正确的环境变量。

示例:设置环境变量

代码语言:javascript
复制
apiVersion: apps.openshift.io/v1
kind: DeploymentConfig
metadata:
  name: your-app-name
spec:
  replicas: 1
  selector:
    app: your-app-name
  template:
    metadata:
      labels:
        app: your-app-name
    spec:
      containers:
        - name: your-app-name
          image: your-docker-image
          ports:
            - containerPort: 80
          env:
            - name: NODE_ENV
              value: production
          command: ["npx", "http-server", "dist/your-app-name"]
  triggers:
    - type: ConfigChange
    - type: ImageChange
      imageChangeParams:
        automatic: true
        containerNames:
          - your-app-name
        from:
          kind: ImageStreamTag
          name: 'your-docker-image:latest'

5. 检查构建和部署日志

如果问题仍然存在,检查 OpenShift 的构建和部署日志,以获取更多调试信息。

查看构建日志

代码语言:javascript
复制
oc logs build/your-build-name

查看部署日志

代码语言:javascript
复制
oc logs dc/your-deployment-config-name
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

openshiftorigin学习记录(9)——S2I镜像定制(基于Git)

参考《开源容器云Openshift》一书,制作一个Tomcat的S2I镜像(从Git下载代码,Maven打包,部署到Tomcat。)...其中: assemble:负责源代码的编译、构建以及构建产出物的部署。 run:S2I流程生成的最终镜像将以这个脚本作为容器的启动命令。...usage:打印帮助信息,一般作为S2I Builder镜像的启动命令。 save-artifacts:为了实现增量构建,构建过程中会执行脚本保存中间构建产物。此脚本并不是必需的。...S2I执行器将到此路径中查找所需要的执行脚本。 通过USER dev定义了一个新用户,并指定该用户为容器的启动用户。以root用户作为启动用户某些情况下存在安全风险。...替换为以下内容: bash -c "/opt/apache-tomcat-8.5.5/bin/catalina.sh run" 脚本内容为启动Tomcat服务器。

1.8K00

kubernetes下的Nginx加Tomcat三部曲之一:极速体验

kubectl命令 实战中,需要在一台电脑安装kubectl工具,然后连接到kubernetes环境执行各种命令,kubectl工具的安装步骤可以参照这篇文章:《rancher下的kubernetes...之三:linux安装kubectl工具》; 脚本文件下载 本次体验所需的deployment和service资源是通过脚本创建的,这个脚本可以通过以下两种方式中的任意一种下载: CSDN下载(无法设置免费下载...kubectl命令电脑,然后解压开,是个名为k8stomcatcluster的文件夹; 执行脚本文件下载 进入解压好的k8stomcatcluster目录; 执行命令chmod a+x *.sh,给shell...脚本赋可执行权限; 执行命令start_all.sh,创建本次实战的资源,页面输出如下信息: root@maven:/usr/local/work/k8s/k8stomcatcluster# ...."ng" created nginx and tomcat running now 验证服务已经启动 先去kubernetes的管理页面看一下服务是否启动,如下图,名为ng、tomcathost的两个服务都已经启动

32030

基于Dubbo的服务提供者与消费者的发布(虚拟机中)以及使用nginx对项目进行负载均衡优化

启动三个tomcat 删除后ROOT文件后 ,将无法访问tomcat 主页, 启动只能通过日志文件判断是否启动成功 !!! 4....重新打包项目 ,并部署 .部署命令详情见截图 ? 上传有点慢, 出现下图说明部署成功!!! ? 7....脚本路径keepalived配置文件中有定义,路径为/usr/local/sbin/check_ng.sh 编辑配置文件: vim /usr/local/nginx/sbin/check_ng.sh...service keepalived stop fi fi 3.脚本创建完之后,还需要改变脚本的权限(不更改权限,就无法自动加载脚本,那就无法启动keepalived...服务) chmod 755 /usr/local/nginx/sbin/check_ng.sh 可以手动执行脚本程序,判断是否有错。

57220

从一张图看Devops全流程

其中,Openshift可以涵盖中间5个阶段,CloudForms可以覆盖第七个阶段。只有第一个阶段目前红帽产品堆栈无法覆盖。...而两个阶段的任务执行,分别是调用bc和dc。 因此,整个代码构建和部署,实际均由OCP完成。Jenkins只是用来显示执行阶段。也可以根据需要,增加审批流。...接下来,启动deploy过程: 查看jenkins的日志,deploy的阶段,就是触发dc,很快,dc执行完毕,应用部署成功。...openshift-tasks-jenkinsfile是创建Jenkins master(执行openshift-tasks-jenkinsfile的模板,如果项目中没有jenkins的master,...: test成功: 接下来是的devInDev阶段: 在这个阶段,Jenkins会调用openshift命令,创建bc和dc: 部署应用并为应用创建routes: 截至到目前,pipeline执行完毕

12.9K104

006.OpenShift持久性存储

Pods由一个或多个容器组成,这些容器一起部署,共享相同的存储和其他资源,可以在任何时候创建、启动、停止或销毁。使用临时存储意味着,当容器停止,写入容器内的文件系统的数据将丢失。...当容器停止也需要持久的保存数据OpenShift使用Kubernetes持久卷(PVs)为pod提供持久存储。...的Recyclable插件,根据每个持久卷设置的策略处理自动执行回收任务。...例如,当将NFS回收策略设置为Recycle后,删除用户绑定到该卷的pv claim之后,会在该卷运行rm -rf命令它被回收之后,NFS卷可以直接绑定到一个新的pv claim。...否则,重新创建registry pod之后,S2I创建的pod可能无法启动。例如,master节点重新启动之后。

1.9K10

OpenShift总体架构设计

Build对象生成后,平台将执行具体的S2I构建操作,包括下载源代码、实例化Builder镜像、执行编译和构建脚本等。 3、生成镜像。...通过oc get pod命令可查询当前项目中所有Pod的状态。下图显示了一个具有两个Init容器和两个主容器的Pod启动过程中,各个容器的启动顺序和对应Pod的状态,以及Pod终止和终止后的状态。...项目首次使用该构建方式OpenShift 容器云平台会启动一个Jenkins服务,然后再将该Pipeline 交由它来执行,并负责启动、监控和管理该构建。...构建和部署可以监视ImageStream,新镜像被添加后会收到通知,并分别通过执行构建或部署来作出反应。...还可以DeploymentConfig配置中定义部署触发器,指定条件发生即进行一次新的部署

1.1K10

干货:构建一个可实现CICD的tomcat容器应用镜像

这种构建方式,实际openshift部署Jenkins Slave Pod,Slave Pod实现构建。...第一步:安装S2I命令行工具: 我将S2I的命令行工具安装到一个RHEL。...因为一个centos的base image,想装什么都可以;而在docker.io,有一些linux的命令是没有的,如tar,这些命令在后面应用的安装过程中会用到。...4 usage脚本 usage脚本是告诉使用者如果使用镜像。 S2I的四个脚本中,通常我们只会用到assemble和run两个脚本。 实际脚本的书写,和应用是关系很大的。...$CATALINA_HOME/webapps echo "WAR's copied" run脚本的作用,就是当build包的应用镜像部署成功以后,启动镜像中的tomcat应用。

1.3K40

集群介绍,keepalived介绍,使用keepalived配置高可用集群

编辑脚本文件(这个脚本文件的路径是可以keepalived.conf文件中自定义的): vim /usr/local/sbin/check_ng.sh 将复制的内容粘贴进去: ?...编辑完脚本后,给这个脚本文件设置755权限(不设置这个权限的话,就无法自动加载这个脚本): chmod 755 /usr/local/sbin/check_ng.sh 18.4 用keepalived配置高可用集群...同样的要编辑检测脚本脚本的内容可以从以下网址获得,我这里的脚本和master机器的配置有些差别,因为我backup机器的nginx是yum安装的,而master机器的nginx则是源码包安装的,所以启动命令不一样...编辑脚本文件: vim /usr/local/sbin/check_ng.sh 将复制的内容粘贴进去: ?...编辑完脚本后,给这个脚本文件设置755权限(不设置这个权限的话,就无法自动加载这个脚本): chmod 755 /usr/local/sbin/check_ng.sh 启动keepalived服务,并查看进程

56630

OpenShift禅道开源版11.5升级为企业版3.3

概述 备份 配置文件、代码和附件的备份 数据库的备份 升级 更新Dockerfile和镜像 上传并导入新的docker镜像 新部署 执行升级程序...回顾和总结 概述 之前的文章《OpenShift企业测试环境应用部署实战》中, 介绍了把禅道部署到企业测试环境的过程....执行: df -h | grep zentao # 输出如下: # 10.X.X.X://vol/Thxxxxxx/zentao-pms 50G 3.0G 48G 6% /var/lib/origin...然后执行如下命令: docker load -i docker_ent_zentao.tar docker push txocp-registry.example.com/ewhisper/zentao...新部署 ❗️ 注意: 因为该禅道docker镜像包括数据库组件: mysql. 为有状态. 无法平滑升级或启动多个. 所以升级前一定要注意升级策略要是: Recreate而不能是其他.

57310

RocketMQ 零基础 集群及控制台部署

首先是broker的启动脚本 vim /usr/local/rocketmq/bin/runbroker.sh ?...bin/runserver.sh 进行同样的修改即可 这样所以配置都完成了 ---- 三、启动 1)rocketmq分nameserver与broker 注意启动需要先启动两台机器的nameserver...再启动broker 关闭要先关闭broker 再关闭nameserver 2)先进入bin目录: cd /usr/local/rocketmq/bin 其中 mqadnin是管理员命令,...NameSrvStartup对应刚才的命令 4)使用守护线程的方式启动两天机器的broker 这里要注意启动指定的配置文件是有区别的 192.168.194.128机器执行:nohup sh mqbroker...端口可以自定义 默认8080 然后使用mvn -package命令打包 我是直接使用的idea打包的 也可以直接使用命令行方式 打包成功后 target文件夹下会出现一个jar包: rocketmq-console-ng

1.7K10
领券