简体   繁体   中英

Docker Container - Missing properties file

This is my Dockerfile

FROM golang:1.13 as builder
WORKDIR /app
COPY invoke.go ./
COPY readproperties.go ./
COPY config.properties ./


RUN CGO_ENABLED=0 GOOS=linux go build -v -o server

FROM fishtownanalytics/dbt:0.19.0
USER root
WORKDIR /dbt
COPY --from=builder /app/server ./
COPY script.sh ./
COPY jaffle-shop ./

ENTRYPOINT ["./server"]

When I run the Docker image and the Go server (invoke.go has the main which calls readproperties function) references the config.properties, I get the following error:

2021/04/21 22:27:29 Go: starting server...
2021/04/21 22:27:29 open config.properties: no such file or directory

How do I copy the properties file?

It has key=value pairs

Building and running this way:

docker build -t sample:v1
PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} sample:v1

All the files are in the same location as the Dockerfile .

Your properties file is copied to the "builder" stage - where it is not needed during compilation. Instead it should be copied to the final stage.

Update your Dockerfile to:

FROM golang:1.13 as builder
WORKDIR /app
COPY invoke.go ./
COPY readproperties.go ./

#
# REMOVE:
#
# COPY config.properties ./


RUN CGO_ENABLED=0 GOOS=linux go build -v -o server

FROM fishtownanalytics/dbt:0.19.0
USER root
WORKDIR /dbt
COPY --from=builder /app/server ./
COPY script.sh ./
COPY jaffle-shop ./


#
# ADD:
#
COPY config.properties ./

#
# OR: copy it from the builder stage
#
#COPY --from=builder /app/config.properties ./

ENTRYPOINT ["./server"]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM