Как правильно настроить сторонние библиотеки приложения golang с помощью docker compose? - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь развернуть свое приложение Golang с помощью docker compose.

На сервере CentOS иерархия папок:

docker_app
 - src
   - app
     - docker-compose.yml
     - main.go

Это приложение Golang использует несколько сторонних библиотек:

  • Gorilla Mux;

  • Gorilla Handlers;

  • рд;

  • godotenv;

  • GORM;

  • goracle.

докер-compose.yml

version: '2'

services:
  app:
    image: golang:1.11-alpine
    volumes:
      - .:/go/src/app
    working_dir: /go/src/app
    command: go run main.go

Когда я пытаюсь запустить проект docker-compose up, возникает ошибка:

Attaching to app_app_1
app_1  | main.go:4:2: cannot find package "github.com/gorilla/handlers" in any of:
app_1  |      /usr/local/go/src/github.com/gorilla/handlers (from $GOROOT)
app_1  |      /go/src/github.com/gorilla/handlers (from $GOPATH)

Как видите, мне нужно настроить сторонние библиотеки. Как сделать это правильно? Также, как настроить имя будущего образа докера и содержимого с помощью docker compose?

Можно ли создать go.mod файл на Windows 10?

Когда я запускаю команду $Env:GOOS = "linux"; $Env:GOARCH = "amd64"; go build в Powershell, возникает ошибка:

enter image description here

1 Ответ

2 голосов
/ 11 марта 2019

Можно ли создать файл go.mod в Windows 10?

Да, если у вас есть Go 1.11 / 1.12

Но чтобы использовать его с docker-compose, вы можете следовать " среде Go Docker dev с модулями Go и перезагрузкой оперативного кода " из Miłosz Smółka

Он использует один Dockerfile для компиляции:

FROM golang:1.11.2-stretch
RUN go get github.com/cespare/reflex
COPY reflex.conf /
ENTRYPOINT ["reflex", "-c", "/reflex.conf"]

Затем docker-compose для выполнения, монтирование скомпилированного исполняемого файла * и кеш модуля Go * :

version: '3'
services:
  publisher:
    build: .
    volumes:
      - ./publisher:/app
      - $GOPATH/pkg/mod/cache:/go/pkg/mod/cache
    working_dir: /app
    env_file:
      - .env
    ports:
      - 5000:5000

Относительно проблемы кросс-компиляции с go-goracle/goracle, , проблема 59 , подробности:

goracle требуется CGO для компиляции в библиотеках Oracle OCI.
Так что требуется либо кросс-компиляция C-цепочки инструментов (и набор специальных env vars соответственно) или родной env (это проще, ИМХО).

Значение: не пытайтесь кросс-компилировать его из Windows, делайте это в Dockerfile, используя непосредственно нужную ОС (через виртуальную машину Linux, что имеет место в среде Windows 10 HyperV ).

...