【问题标题】:Gitlab CICD cannot add serviceGitlab CICD 无法添加服务
【发布时间】:2023-02-06 15:39:03
【问题描述】:

对于我的项目,我有时需要针对 ms sql server 对我的代码进行单元测试。 此刻,我创建了一个巨大的 docker 镜像,其中包含我需要的所有工具,包括 sql server。 现在这个图像的大小达到了大约 15 GB,这真的很不酷。

所以我正在尝试使用 GitLab CICD 服务部分(如此处所述https://docs.gitlab.com/ee/ci/services/index.html)。 但是当我尝试将我的(自定义)图像添加为服务时,我不断遇到健康检查问题:

*** WARNING: Service runner-hrtjgacu-project-1489-concurrent-0-2ae3f3cd2099f19a-gitlab.mydomain.lcaol__windowsdockerimages__mssql-0 probably didn't start properly.
Health check error:
service "runner-hrtjgacu-project-1489-concurrent-0-2ae3f3cd2099f19a-gitlab.mydomain.local__windowsdockerimages__mssql-0-wait-for-service" health check: exit code 1
Health check container logs:
2023-01-19T09:58:09.913696500Z FATAL: No HOST or PORT found                      
Service container logs:
*********

现在我在网上找到了一些关于需要在 Dockerfile 中公开服务端口的信息,所以我尝试了一下,但这并没有帮助。

这是我的 MSSQL DockerFile 当前的样子:

FROM mcr.microsoft.com/windows/servercore:ltsc2019

# Download Links: 
ENV exe "https://go.microsoft.com/fwlink/?linkid=840945"
ENV box "https://go.microsoft.com/fwlink/?linkid=840944"

ENV sa_password="_" \
   attach_dbs="[]" \
   ACCEPT_EULA="Y" \
   sa_password_path="C:\ProgramData\Docker\secrets\sa-password"

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

# make install files accessible
COPY start.ps1 /
WORKDIR /

RUN Invoke-WebRequest -Uri $env:box -OutFile SQL.box ; \
    Invoke-WebRequest -Uri $env:exe -OutFile SQL.exe ; \
    Start-Process -Wait -FilePath .\SQL.exe -ArgumentList /qs, /x:setup ; \
    .\setup\setup.exe /q /ACTION=Install /INSTANCENAME=MSSQLSERVER /FEATURES=SQLEngine /UPDATEENABLED=0 /SQLSVCACCOUNT='NT AUTHORITY\System' /SQLSYSADMINACCOUNTS='BUILTIN\ADMINISTRATORS' /TCPENABLED=1 /NPENABLED=0 /IACCEPTSQLSERVERLICENSETERMS ; \
    Remove-Item -Recurse -Force SQL.exe, SQL.box, setup

RUN stop-service MSSQLSERVER ; \
    set-itemproperty -path 'HKLM:\software\microsoft\microsoft sql server\mssql14.MSSQLSERVER\mssqlserver\supersocketnetlib\tcp\ipall' -name tcpdynamicports -value '' ; \
    set-itemproperty -path 'HKLM:\software\microsoft\microsoft sql server\mssql14.MSSQLSERVER\mssqlserver\supersocketnetlib\tcp\ipall' -name tcpport -value 1433 ; \
    set-itemproperty -path 'HKLM:\software\microsoft\microsoft sql server\mssql14.MSSQLSERVER\mssqlserver\' -name LoginMode -value 2 ;

HEALTHCHECK CMD [ "sqlcmd", "-Q", "select 1" ]

EXPOSE 1433/tcp
EXPOSE 4022/tcp
EXPOSE 135/tcp
EXPOSE 1434/tcp
EXPOSE 1434/udp

CMD .\start -sa_password $env:sa_password -ACCEPT_EULA $env:ACCEPT_EULA -attach_dbs \"$env:attach_dbs\" -Verbose

这是我的 .gitlab-ci.yml 文件:

default:
  image:
    name: gitlab.mydomain.local:4567/windowsdockerimages/basicnetframeworkimage:latest
  tags:
    - windows
    - docker

# The stages during this build
stages:
  - build

build:
  stage: build
  script:
  - echo "Hello world"
  - ping mssql
  - dotnet run
  services:
  - name: gitlab.mydomain.local:4567/windowsdockerimages/mssql
    alias: mssql

谁能帮助我更接近解决方案? *注意,ping mssql也失败了,我们运行的容器找不到DNS 入口

【问题讨论】:

    标签: docker gitlab gitlab-ci gitlab-ci-runner


    【解决方案1】:

    我会为 MSSQL 服务器 (https://hub.docker.com/_/microsoft-mssql-server) 使用现有的官方映像,并在一个容器中运行单元测试,在另一个容器中运行数据库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-16
      • 2022-08-10
      • 1970-01-01
      相关资源
      最近更新 更多