如何在 gitlab-runner 中发布端口?

Posted

技术标签:

【中文标题】如何在 gitlab-runner 中发布端口?【英文标题】:How can I publish a port in a gitlab-runner? 【发布时间】:2020-11-26 07:49:25 【问题描述】:

我想用 gitlab-runner (docker executor) 在我的服务器上部署一个容器,然后从我的本地浏览器获取响应。

我有最简单的启动 nginx 的 dockerfile:

FROM nginx:alpine
COPY /nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

我的 nginx 配置如下所示:

server 
    listen 80;
    location / 
        root /usr/share/nginx/html;
        index index.html index.htm;
        try_files $uri $uri/ /index.html =404;
    


这是我的 .gitlab.yml:

image: docker:latest
services: 
  - docker:dind

variables:
  WORK_DIR: $CI_PROJECT_NAME
  BRANCH: $CI_COMMIT_REF_NAME
  REGISTRY: registry.gitlab.com/myusername/cicdtest

stages:
  - build
  - deploy

build_project:
    stage: build
    script:
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
        - docker build -t $REGISTRY .
        - docker push $REGISTRY



deploy_project:
    stage: deploy
    script:
        - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
        - docker pull $REGISTRY
        - docker stop $(docker ps -a -q) || true && docker rm $(docker ps -a -q) || true
        - docker run --name=$BRANCH -p 80:80 -itd $REGISTRY   

还有我的 config.toml:

[[runners]]
  name = "name1"
  url = "https://gitlab.com/"
  token = "secret"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.docker]
    tls_verify = false
    image = "docker:alpine"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
    shm_size = 0

顺便说一句,使用 docker 和 nginx 的一切都可以在 localhost 中正常工作。

现在,当我推送回购时,所有管道都获得了通过状态,并且每一行都执行得很好,但是当我尝试从本地浏览器使用 url 185.xxx.xx.xx 访问我的容器时我无法得到任何回应。就像 gitlab-runner 没有发布任何端口一样。

【问题讨论】:

【参考方案1】:

目前无法为您提供解决方案,但我可以为您提供帮助。首先请检查正在运行的 docker 容器,看看您的想法是否正确,即端口设置不正确:

[docker inspect [OPTIONS] NAME|ID [NAME|ID...]]

https://docs.docker.com/engine/reference/commandline/inspect/

【讨论】:

以上是关于如何在 gitlab-runner 中发布端口?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 centos 中完全删除/卸载 gitlab-runner

如何让 gitlab-runner 从指定文件中读取而不是 .gitlab-ci.yml?

如何使用包管理器在 Debian 11 上安装 gitlab-runner

如何从gitlab-runner执行滚动更新

由于禁止的秘密访问规则,无法在 gitlab-runner 中使用 helm upgrade

Gitlab-runner 未能删除权限被拒绝