Reputation: 2887
Im using the following dockerfile
to build and run
go application
the application name is book-store
and it's located under go/src/book-store
in my local mac
.
go
-src
--book-store
--main.go
Now i've create the following docker file
FROM golang:1.9.6-alpine
RUN apk update && apk upgrade && apk add --no-cache bash git
RUN go get github.com/gin-gonic/gin
ENV SOURCES /go/src/book-store
COPY . ${SOURCES}
RUN cd ${SOURCES} && CGO_ENABLED=0 go build
RUN chmod +x /go/src/book-store
WORKDIR ${SOURCES}
CMD ${SOURCES}
EXPOSE 8080
in addition i've create this docker compose
version: '2'
services:
book-store-web:
build: .
image: book-store:1.0.1
environment:
- PORT=8080
ports:
- "8080:8080"
Now I use
docker-compose build
which created image successfully, and now I want to run the image with
docker-compose up
And I got the following error:
Creating book-store_book-store-web_1 ... done
Attaching to book-store_book-store-web_1
book-store-web_1 | /bin/sh: /go/src/book-store: Permission denied
book-store_book-store-web_1 exited with code 126
Any idea what could be wrong here ?
I've added the RUN chmod +x /go/src/book-store
to overcome the permission issue without success...
Upvotes: 1
Views: 220
Reputation: 6823
Your cmd line is incorrect it should read:
CMD ${SOURCES}/book-store
you are trying to execute a directory
Also just as an aside this container is running as root, you should really make it run as a user you create that doesn't have root privs.
You could do this with a Dockerfile that looked a bit like this:
FROM golang:1.9.6-alpine
RUN apk update && apk upgrade && apk add --no-cache bash git
RUN go get github.com/gin-gonic/gin
ENV SOURCES /go/src/book-store
COPY . ${SOURCES}
RUN addgroup goapi && \
adduser -D -S -G goapi goapi && \
cd ${SOURCES} && \
CGO_ENABLED=0 go build && \
chmod +x /go/src/book-store && \
chown -R goapi:goapi /go
USER goapi
WORKDIR ${SOURCES}
CMD ${SOURCES}/book-store
EXPOSE 8080
hope this helps.
Upvotes: 2