【问题标题】:How to use docker (respectively docker-in-docker) to start an nginx over Gitlab CI?如何使用 docker(分别为 docker-in-docker)在 Gitlab CI 上启动 nginx?
【发布时间】:2018-11-15 20:44:57
【问题描述】:

我有一个 DigitalOcean 服务器,它有一个注册到一个简单的 Gitlab 存储库的 gitlab 运行器。第一步,我想拉并运行普通的 nginx。我可以通过该服务器上的 docker 安装来做到这一点,没有任何问题。

所以现在我想在 dind (docker-in-docker) 的帮助下执行此操作,因为 gitlab 文档建议使用 gitlab 运行程序。

我定义了以下 gitlab-ci 文件:

image: docker:18.03.1-ce

variables:
  DOCKER_DRIVER: overlay2

services:
- docker:dind

before_script:
  - docker info

build:
  script:
    - docker pull nginx
    - docker run -d -p 80:80 nginx

我的 gitlab 运行器已在 repo 中注册得很好。这是 gitlab-runner 服务的 config.toml:

[[runners]]
  name = "my-runner-04"
  url = "https://gitlab.com/"
  token = TOKEN
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "docker:18.03.1-ce"
    privileged = true
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]

...工作做得很好。 gitlab页面的控制台输出没有错误。这是输出:

...
Status: Downloaded newer image for nginx:latest
$ docker run -d -p 80:80 nginx
84edac280a13714f3c5446ea024ad47864f68f6e5b73383427a28180227f37fd
Job succeeded

现在,如果我访问我的服务器的 IP 地址。静态 nginx 测试页面不显示。所以我怀疑dind的端口暴露或路径有问题?我到底错过了什么?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

    您确定要在 GitLab CI 中的 nginx 上托管网站吗?

    GitLabCI 用于测试/部署。 你的 gitlab-ci 文件说: 下载 nginx + 运行 nginx => 结束...

    如果你想在你的 DigitalOcean 服务器上运行 nginx,请在 GitLabCI 之外进行。

    我可以想象你的测试 PHP 应用程序的设计(在 GitLabCI 中):

    1. 下载PHP应用...
    2. 拉取运行nginx
    3. 尝试下载源代码 PHP 应用程序通过 nginx/检查响应 200.. 等..

    【讨论】:

    • 我是新手,我刚刚开始实施 CI/CD 架构。所以这是我的第一个测试,我想让事情变得简单。当然我不想只运行一个 nginx 服务器。我想运行我的节点应用程序。无论如何,我尝试将这个普通的 nginx 图像容器化以测试 gitlab 运行器。但我真的不明白为什么它不起作用。
    猜你喜欢
    • 2022-09-28
    • 2018-04-27
    • 2016-12-11
    • 2018-01-01
    • 1970-01-01
    • 2019-12-10
    • 2018-10-12
    • 1970-01-01
    • 2020-02-02
    相关资源
    最近更新 更多