
FROM golang:alpine as builder # 需要go环境 MAINTAINER fl1906WORKDIR /work # 源 RUN go env -w GOPROXY=https://goproxy.cn && go env -w CGO_ENABLED=0 && go env -w GO111MODULE=on COPY go.mod go.sum ./ RUN go mod downloadCOPY . . RUN go build -o main main.goFROM alpine:latest # 设置时区 RUN apk add --no-cache tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezoneWORKDIR / # 复制到工作区 COPY --from=builder /work/ ./ # COPY --from=builder /work/config ./config # 对外端口 EXPOSE 8080 # 执行 CMD ["./main"]
go语言 Dockerfile builddial tcp: lookup 报错解决方案build的时候走到下载mod包会报错:“dial tcp: lookup goproxy.cn on 223.6.6.6:53: read udp 172.17.0.2:41803->223.6.6.6:53: i/o timeout”。
开始以为是DNS问题,然后怀疑是代理不对?最终排除了这两个部分,于是大胆的考虑容器里是不是不通外网?
还真是如此。
因为之前的build指令没有特殊指定网络,所以修正指令后如下:
docker build --network host ...即可正常build镜像。
pipeline {agent {node {label 'go16'}}stages {stage('从仓库拉取代码') {agent nonesteps {container('base') {git(credentialsId: 'gitee-id', url: 'https://gitee.com/fl1906249647/learning-gin.git', branch: 'master', changelog: true, poll: false)}}}stage('构建推送镜像到阿里云仓库 ') {agent nonesteps {container('go') {sh 'docker build --network host -f Dockerfile -t $REGISTRY/$DOCKERHUB_NAMESPACE/go-admin:SNAPSHOT-$BUILD_NUMBER .'withCredentials([usernamePassword(credentialsId : 'aliyun-docker-registry' ,passwordVariable : 'DOCKER_PWD_VAR' ,usernameVariable : 'DOCKER_USER_VAR' ,)]) {sh 'docker login -u "$DOCKER_USER_VAR" -p "$DOCKER_PWD_VAR" $REGISTRY'sh 'docker push $REGISTRY/$DOCKERHUB_NAMESPACE/go-admin:SNAPSHOT-$BUILD_NUMBER '}}}}stage('部署到线上') {steps {container ('go') {withCredentials([kubeconfigFile(credentialsId: env.KUBECONFIG_CREDENTIAL_ID,variable: 'KUBECONFIG')]) {sh 'envsubst < deploy/go-admin.yaml | kubectl apply -f -'}}}}}environment {KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'REGISTRY = 'registry.cn-hangzhou.aliyuncs.com'DOCKERHUB_NAMESPACE = 'choose-course-system'APP_NAME = 'learning-gin'} }
apiVersion: apps/v1 kind: Deployment metadata:labels:app: go-adminname: go-adminnamespace: go-admin #一定要写名称空间 spec:progressDeadlineSeconds: 600replicas: 1selector:matchLabels:app: go-adminstrategy:rollingUpdate:maxSurge: 50%maxUnavailable: 50%type: RollingUpdatetemplate:metadata:labels:app: go-adminspec:imagePullSecrets:- name: aliyun-docker-registry #提前在项目下配置访问阿里云的账号密码containers:- image: $REGISTRY/$DOCKERHUB_NAMESPACE/go-admin:SNAPSHOT-$BUILD_NUMBERimagePullPolicy: Alwaysname: appports:- name: http-admincontainerPort: 8080protocol: TCPresources:limits:cpu: '3'memory: 3000Mirequests:cpu: 60mmemory: 50MiterminationMessagePath: /dev/termination-logterminationMessagePolicy: FilednsPolicy: ClusterFirstrestartPolicy: AlwaysterminationGracePeriodSeconds: 30 --- apiVersion: v1 kind: Service metadata:labels:app: go-adminname: go-adminnamespace: go-admin spec:ports:- name: httpport: 8080protocol: TCPtargetPort: 8080selector:app: go-adminsessionAffinity: Nonetype: ClusterIP
在Gitee仓库配置 WebHook 提交代码

项目代码结构

成功

上一篇:文艺范的思念句子有哪些?
下一篇:为什么读得懂句子却读不懂文章