在Docker中设置Go Glide

问题描述 投票:0回答:1

我正在使用Docker中的Go和Glide构建一个应用程序。我还必须使用反射来自动触发编译。

我无法弄清楚如何使用Docker制作Glide。

Dockerfile

FROM golang:1.8.1-alpine

ENV GOBINARIES /go/bin
ENV BUILDPATH /code
ENV REFLEXURL=http://s3.amazonaws.com/wbm-raff/bin/reflex1.8a
ENV REFLEXSHA=19bdbbb68c869f85ee22a6b7fa9c73f8e5b46d0fe7a73df37e028555a6ba03e8

WORKDIR $GOBINARIES
RUN rm -rf /var/cache/apk/*
RUN wget -q "$REFLEXURL" -O reflex
RUN chmod +x /go/bin/reflex

ENV TOOLS /go/_tools

RUN mkdir -p $BUILDPATH
ENV PORT 5000
EXPOSE $PORT

RUN mkdir -p $TOOLS
ADD build.sh $TOOLS
ADD reflex.conf $TOOLS
RUN chown root $TOOLS/build.sh
RUN chmod +x $TOOLS/build.sh

WORKDIR $BUILDPATH
CMD ["reflex","-c","/go/_tools/reflex.conf"]

build.是

set -e
echo "[build.sh:building binary]"
cd $BUILDPATH
glide install -s -v
go build -o /servicebin && rm -rf /tmp/*
echo "[build.sh:launching binary]"
/servicebin

reflex.conf

-sr '\.build$' -- sh -c '/go/_tools/build.sh'

泊坞窗,compose.yml

version: '3'
services:
  logen:
    build:
      context: ./Docker
      dockerfile: Dockerfile
    ports:
    - "5000:5000"
    volumes:
    - .:/code

Atom on-save插件配置文件

[
  {
    "srcDir": ".",
    "destDir": ".",
    "files": "**/*.go",
    "command": "echo $(date) - ${srcFile} > .build"
  }
]

main.go

package main

import (
    "io"
    "log"
    "net/http"
    "os"
  "github.com/astaxie/beego"
)

func hello(w http.ResponseWriter, r *http.Request) {
    io.WriteString(w, "Hello world!1")
}

func main() {
    log.SetOutput(os.Stdout)

    port := ":" + os.Getenv("PORT")
    http.HandleFunc("/", hello)

    log.Printf("\n Application is listening on %v\n", port)

    http.ListenAndServe(port, nil)
}

enter image description here

docker go atom-editor development-environment glide-golang
1个回答
0
投票

实际上,我不需要在容器中安装Glide!只需将主机中的供应商文件夹反映到docker-compose.yml中的$ GOPATH / src即可。然后编译就可以了。

version: '3'
services:
  logen:
    build:
      context: ./Docker
      dockerfile: Dockerfile
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - ./vendor:/go/src
© www.soinside.com 2019 - 2024. All rights reserved.