登录
首页 >  Golang >  Go问答

使用 Docker 网桥将 Jenkins 中的文件发布到 Go 服务器的方法(基于 Curl)

来源:stackoverflow

时间:2024-03-04 08:15:31 306浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《使用 Docker 网桥将 Jenkins 中的文件发布到 Go 服务器的方法(基于 Curl)》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

作为 jenkins 自由式项目的一部分,我尝试执行以下 post step shell 命令:

curl -x post -i -f "simpletest=@target/surefire-reports/test-junitfaq.simpletest.xml" 127.0.0.1:9090/

此请求针对以下简单的 go 服务器:

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "log"
    "net/http"
)

func main() {
    router := mux.newrouter()
    router.
        path("/").
        methods("post").
        handlerfunc(uploadfile)

    fmt.println("starting...")

    log.fatal(http.listenandserve(":9090", router))
}

func uploadfile(w http.responsewriter, r *http.request) {
    (w).header().set("access-control-allow-origin", "*")

    err := r.parseform()
    if err != nil {
        w.write([]byte(err.error()))
        return
    }

    file, _, err := r.formfile("simpletest")
    defer file.close()
    if err != nil {
        w.write([]byte(err.error()))
        return
    }

    bytes := make([]byte, 100)
    n, err := file.read(bytes)
    if err != nil {
        w.write([]byte(err.error()))
        return
    }

    fmt.printf("%d bytes: %s\n", n, string(bytes[:n]))
}

jenkinsgo 服务器都在使用以下 docker-compose 文件创建的 docker 容器中运行:

version: '3'

services:

  foobar:
    container_name: foobar
    image: foobar:latest
    hostname: foobar
    build:
      context: .
      dockerfile: dockerfile
    networks:
      - foobar-net
    ports:
      - 9090:9090
    labels:
      kompose.service.type: loadbalancer

  jenkins:
    container_name: jenkins
    image: jenkinsci/blueocean
    restart: always
    hostname: foobar
    ports:
      - 7070:8080
    networks:
      - foobar-net
    depends_on:
      - foobar
    links:
      - foobar
    volumes:
      - $pwd/data/jenkins:/var/jenkins_home

networks:
  foobar-net:
    driver: bridge

当我执行此作业时,curl 命令失败,并返回以下结果:

curl -X POST -i -F 'SimpleTest=@target/surefire-reports/TEST-junitfaq.SimpleTest.xml' 127.0.0.1:9090/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0curl: (7) Failed to connect to 127.0.0.1 port 9090: Connection refused
Build step 'Execute shell' marked build as failure

可能是什么问题导致我的连接被拒绝?


解决方案


在 Jenkins 容器中,curl 到 127.0.0.1:9090 将尝试连接到同一容器内的服务,但看起来您正在另一个容器中运行此服务。您可能想要卷曲到 foobar:9090

本篇关于《使用 Docker 网桥将 Jenkins 中的文件发布到 Go 服务器的方法(基于 Curl)》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>