Всем добрый день!
Не пойму в чем причина, но у меня почему-то не получается забилдеть через docker-compose контейнер со совими сервисами.
Если запускать по отдельности, а только postgresql в docker-e - все ок, все работает, как и задумывалось. Пытаюсь сделать чтобы можно было запускать одной командой и почему-то при создании контейнера, пишет в моих сервисах на GO что пакет не находится в GOROOT.
В go env GO
GO111MODULE=on
Вот моя структура проекта:
modules
├───front-end
│ ├───cmd
│ │ └───front-end/main.go
│ └───pkg
│ | ├───app
│ | │ ├───config
│ | │ └───router
│ | ├───handler
│ | │ └───event
│ | └───templates
| |
| └─── front-end.Dockerfile
| └───go.mod
|
└───backend
├───cmd
│ └───backend/main.go
├───handler
│ └───product
├───model
├───pkg
└───app
| ├───config
| ├───router
| ├───storage
| │ └───postgresql
| └───worker
|
└───backend.Dockerfile
└───go.mod
docker-compose.yaml
Мой docker-compose.yaml:
version: "3.1"
services:
front-end:
container_name: "frontend"
build:
context: "."
dockerfile: "./modules/front-end/front-end.Dockerfile"
ports:
- "8080:8080"
environment:
PORT: ":8080"
PROJECT_ID: "359008"
TOPIC_ID: "topic"
backend:
container_name: "backend"
build:
context: "."
dockerfile: "./modules/backend/backend.Dockerfile"
ports:
- "8081:8081"
environment:
PORT: ":8081"
PROJECT_ID: "359008"
TOPIC_ID: "topic"
HOST_DB: "postgres"
PORT_DB: "5432"
USER_DB: "user"
PSW_DB: "qwerty"
NAME_DB: "user"
SSLDB: "disable"
postgres:
container_name: "postgres"
image: postgres:latest
restart: always
user: "user"
environment:
POSTGRES_USER: "user"
POSTGRES_PASSWORD: "qwerty"
POSTGRES_DATABASE: "user"
ports:
- "5432:5432"
Мой dockerFile одного из сервиса, второй аналогичный, только путь к go.mod в другую папку:
FROM golang:1.19
WORKDIR /backend
# Copy and download dependency using go mod
COPY ./modules/backend/go.mod .
COPY ./modules/backend/go.sum .
RUN go mod download
# Copy the code into the container
COPY . .
ENTRYPOINT ["go", "run", "./modules/backend/cmd/backend/main.go"]
Вопрос наверное выглядит очень глупым, но уже все идеи кончились, туториалы посмотрел, но пока результата не дало.
Буду благодарен за любую помощь в моем вопросе, или направлении где искать ошибку.
П.С.: все файлы не описывал по папкам, т.к. они роли в моей проблеме не играют, но если надо переделаю всю структуру и добавлю все файлы, хотя уверен что проблема кроется в dockerfiles.
UPD:
Пофиксил проблему в dockerfiles.
Вот так выглядит рабочий dockerfile :
FROM golang:1.19
WORKDIR /backend
# Copy and download dependency using go mod
COPY ./modules/backend/go.mod .
COPY ./modules/backend/go.sum .
RUN go mod download
# Copy the code into the container
COPY ./modules/backend ./
ENTRYPOINT ["go", "run", "./cmd/backend/main.go"]