首页
学习
活动
专区
工具
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
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券