docker - 如何在 Gitlab-CI Runner 上下文中连接到 Apache?

标签 docker continuous-integration gitlab gitlab-ci gitlab-ci-runner

我想连接到在我的 gitlab-ci.yml 中创建的 Apache (为了运行验收测试),但我不明白该怎么做。

尝试curl -i http://localhost/给出:

curl: (7) Failed to connect to localhost port 80: Connection refused

gitlab-ci.yml的内容

image: php:7.0-apache

variables:
 DEBIAN_FRONTEND: noninteractive

before_script:
  - apt-get update -yqq
  - apt-get install -yqq curl net-tools

hello-world:
  stage: test
  script:
  - ./script.sh

script.sh的内容

#!/usr/bin/env bash

set -e

echo-run() {
    echo "===== ===== $1"
    echo "$($1)"
    echo
}

declare MYHOSTNAME="$(hostname)"

echo-run "hostname"
echo-run "netstat -antup"
echo-run "pwd"
echo-run "ls -al --color=auto ."
echo "curl -i http://${MYHOSTNAME}/"

# This does not work: "failed to connect to <hostname> port 80: Connection refused"
curl -i http://${MYHOSTNAME}/

该项目托管于gitlab.com/matt.faure/debug-ci/这是 ouput of a failed job

据我了解,这是一个“初始”问题:我在哪个世界?

MYHOSTNAME是 Docker 容器的主机名,显然这不起作用,因为它是从容器内部看到的名称,并且 IP/端口由 Runner 映射(或者可能不是)。那么默认映射是什么?如何配置?

(这适用于常规 Docker 环境)

我收获了Gitlab Runner doc没有成功。我还在 Gitlab 论坛和 StackOverflow 上进行了广泛的搜索。我发现了这些类似的问题,但没有一个让我找到解决方案:

总结一下,我遗漏或误解了什么?

最佳答案

您的 Apache 没有运行。

您的 netstat -antup 仅显示外部地址连接,可能来自之前运行的 apt-get。

Gitlab Runner 启动一个容器来执行您的 before_script scriptafter_script,它会覆盖 ENTRYPOINTCMD 您正在使用的镜像依赖于正常启动 Apache。

在 script.sh 中添加一个步骤以在后台运行 apache(但不确定它是否会起作用,我从未尝试过),或者只是将 apache 链接为 service ,取决于您的目标。

关于docker - 如何在 Gitlab-CI Runner 上下文中连接到 Apache?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52630651/

相关文章:

ssh - 使用 SSH key 对 GitLab.com 进行身份验证的问题

java - 如何连接eclipse和docker

Docker 组合端口映射

azure - 在 Visual Studio Team Services 中部署后运行集成测试

deployment - Bamboo 部署 - 为每个部署项目添加新环境

gitlab - 如何防止在GitLab中创建组

docker - mac 上 docker.qcow2 的大小比我拥有的图像大得多

go - 如何使用map[string]struct{}

build-process - 构建服务器硬件配置

github - GIT:创建具有还原更改的新分支