You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitLab CI/CD将Angular应用部署至Windows主机Apache服务器

问题分析与解决方案

你的核心问题在于Windows主机上Docker容器的路径挂载格式错误,同时存在Angular构建产物路径的潜在问题,再结合Windows环境的特性,以下是具体的修复方案和更适配的替代方案:


方案一:修复Docker Executor配置

1. 修正GitLab Runner的config.toml路径挂载

Windows主机上的Docker需要特殊的路径格式才能正确映射本地目录,将卷挂载配置中的Windows路径转换为Docker识别的格式:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "Test runner"
  url = "https://gitlab.com/"
  id = 111
  token = "xxx"
  token_obtained_at = 2022-10-13T17:24:15Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "node:16.13.1" # 统一使用Node镜像,避免环境切换问题
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    # 修正Windows路径格式:将C:\www\my_app转换为/c/www/my_app/
    volumes = ["/cache", "/c/www/my_app/:/my_volume_in_container:rw"]
    shm_size = 0

注意:需确保Docker for Windows已启用文件共享(Settings -> Resources -> File Sharing),勾选对应盘符。

2. 修正.gitlab-ci.yml构建与部署逻辑

Angular默认构建产物会输出到dist/项目名目录(而非dist根目录),同时优化依赖安装逻辑:

image: node:16.13.1

cache:
  paths:
    - node_modules
    - ~/.npm # 缓存npm全局包,避免重复安装Angular CLI

stages:
  - setup
  - build
  - deploy

setup:
  stage: setup
  script:
    - npm install
    - npm install -g @angular/cli # 全局安装CLI,后续直接调用ng命令

build:
  stage: build
  script: 
    - ng build --prod # 生产环境构建
  artifacts:
    paths:
      - dist/your-project-name # 替换为你的Angular项目名称

deploy_test:
  stage: deploy
  script:
    - ls -la ./dist/your-project-name # 先验证构建产物是否存在
    - cp -R ./dist/your-project-name/* /my_volume_in_container/
    - ls -la /my_volume_in_container/ # 验证文件是否复制成功
  dependencies:
    - build
  tags:
    - my-test-runner

方案二:使用Shell Executor(更适配Windows环境)

直接在Windows主机上运行GitLab Runner,跳过Docker容器的路径映射问题,更简单可靠:

1. 配置GitLab Runner为Shell Executor

安装Windows版GitLab Runner并注册为Shell executor,修改config.toml:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "Windows Test runner"
  url = "https://gitlab.com/"
  id = 111
  token = "xxx"
  token_obtained_at = 2022-10-13T17:24:15Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "shell"
  shell = "powershell" # 使用PowerShell执行命令
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

2. 适配Windows的.gitlab-ci.yml

stages:
  - setup
  - build
  - deploy

setup:
  stage: setup
  script:
    - npm install
    - npm install -g @angular/cli
  tags:
    - my-test-runner

build:
  stage: build
  script: 
    - ng build --prod
  artifacts:
    paths:
      - dist/your-project-name
  tags:
    - my-test-runner

deploy_test:
  stage: deploy
  script:
    # 复制产物到Apache网站根目录(替换为你的实际路径)
    - Copy-Item -Path ".\dist\your-project-name\*" -Destination "C:\Apache24\htdocs\my_app" -Recurse -Force
    # 可选:重启Apache服务使变更生效
    - Restart-Service Apache2.4
  dependencies:
    - build
  tags:
    - my-test-runner

关键注意事项

  1. 确保Windows主机已安装对应版本的Node.js和npm
  2. GitLab Runner服务的运行用户需拥有Apache网站目录的读写权限
  3. 若使用Docker executor,需确认容器内用户(默认是node而非root)对挂载目录有写权限,可在deploy脚本中添加chmod -R 755 /my_volume_in_container/调整权限

内容的提问来源于stack exchange,提问作者edit2112

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 17:25:49