Куда положить скомпилированный Go бинарный файл? - PullRequest
1 голос
/ 23 апреля 2020

Я пытаюсь собрать свой первый Dockerfile для приложения Go и использую DroneCI для построения конвейера.

Конфигурация DroneCI выглядит следующим образом:

kind: pipeline
type: docker
name: Build auto git tagger

steps:
  - name: test and build
    image: golang
    commands:
      - go mod download
      - go test ./test
      - go build ./cmd/git-tagger

  - name: Build docker image
    image: plugins/docker
    pull: if-not-exists
    settings:
      username: 
      password: 
      repo: 
      dockerfile: ./build/ci/Dockerfile
      registry: 
      auto_tag: true

trigger:
  branch:
    - master

Я следовал соглашению о структуре из https://github.com/golang-standards/project-layout:

enter image description here

Пока Dockerfile выглядит следующим образом:

FROM alpine:latest

RUN apk --no-cache add ca-certificates

WORKDIR /root/

Следующим шагом является копирование двоичного файла приложения GO в контейнер, и здесь возникает вопрос, где поставить скомпилированный бинарный файл? На данный момент он помещается в папку проекта.

1 Ответ

1 голос
/ 23 апреля 2020

Вы можете указать выходной каталог и имя файла с флагом go build -o. Например:

go build ./cmd/git-tagger -o ./build/package/foo

Затем отредактируйте ваш файл Docker:

  1. Загрузите полученный двоичный файл с помощью COPY или ADD

  2. Выполните его с помощью ENTRYPOINT или CMD

PS Вы указали путь Dockerfile как ./build/ci/Dockerfile в своей конфигурации. Но это в package dir на скриншоте.

Не забывайте, что связанный вами репозиторий - это просто личное мнение smb, и Go на самом деле не принуждает вас к какой-либо структуре, это зависит от стандартов вашей компании или ваших предпочтений. Так что не очень важно, куда поместить бинарный файл.

...