I'm trying to build an image for local development. To do so, I'm using a specific Dockerfile and a specific docker-compose file.
This is the Dockerfile.local file:
FROM golang:1.23-alpine3.19
RUN apk add --no-cache curl vim ca-certificates unzip git
WORKDIR /app
RUN go install github.com/air-verse/[email protected]
COPY ./src/go.mod ./src/go.sum ./
RUN go mod download
COPY ./environments/file.env ./environments/
CMD ["air", "--build.cmd", "go build -o ./tmp/main ./cmd/api", "--build.bin", "./tmp/main"]
The problem is that the file.env is not being copied in /app/environments/file.env.
However, go.mod and go.sum are, so it seems some COPY instructions do work and other don't.
The docker-compose-local.yaml is this:
services:
postgres:
...
api:
build:
context: .
dockerfile: Dockerfile.local
ports:
- 8000:8000
restart: always
volumes:
- ./src:/app
depends_on:
- postgres
volumes:
database:
And the folder structure is this:
Dockerfile.local
docker-compose-local.yaml
environments/
├── file.env
src/
├── go.sum
├── go.mod
├── ...
I've deleted the .dockerignore, so it's not possible that the problem is coming from there.
I'm just running out of ideas. I've tried to change the file name, move where is located, use absolute paths for dst, basically all possible combinations of the copy parameters. None of them have worked. I've also tried to copy the file with .txt extension instead of .env, but it did not make any difference.
I can't understand why the .env is not being copied while the go.* files are.