मैं अपने गो कंटेनर को शुरू करने के लिए अपने प्रोडक्शन सर्वर पर sudo docker-compose चला रहा हूं। मेरे पास मेरे प्रोडक्शन सर्वर में sudo एक्सेस है लेकिन मैं रूट यूजर नहीं हूं।

त्रुटि:

go_1     | /bin/sh: ./: Permission denied

Docker-compose.yml

go:
    build:
      context: ./api
      args:
        app_env: ${APP_ENV}
    volumes:
      - ./api:/go/src/myproject/api
    expose:
      - "8080"

डॉकरफाइल जाओ

From golang:1.8.3-alpine3.6

RUN apk update && \
    apk add \
        bash \
        build-base \
        curl \
        make \
        git \
        && rm -rf /var/cache/apk/*

ARG app_env
ENV APP_ENV $app_env

COPY . /go/src/myproject/api
WORKDIR /go/src/myproject/api


CMD if [ ${APP_ENV} = prod ]; \
    then \
    ./; \
    else \
    go get github.com/pilu/fresh && \
    fresh; \
    fi


EXPOSE 8080

इसे कैसे हल करें इस पर कोई विचार?

1
user3226932 27 सितंबर 2017, 23:08

2 जवाब

सबसे बढ़िया उत्तर

आपको अपना गो प्रोग्राम बनाना होगा और फिर डॉकर को CMD के साथ, परिणामी बाइनरी को डिफ़ॉल्ट निष्पादन योग्य के रूप में उपयोग करने के लिए कहना होगा।

कुछ इस तरह का प्रयास करें:

From golang:1.8.3-alpine3.6

RUN apk update && \
    apk add \
        bash \
        build-base \
        curl \
        make \
        git \
        && rm -rf /var/cache/apk/*

ARG app_env
ENV APP_ENV $app_env

COPY . /go/src/myproject/api
WORKDIR /go/src/myproject/api

RUN go get ./
RUN go build

CMD if [ ${APP_ENV} = prod ]; \
    then \
    api; \
    else \
    go get github.com/pilu/fresh && \
    fresh; \
    fi


EXPOSE 8080
1
mkopriva 27 सितंबर 2017, 23:57

यदि आपने मुख्य फ़ंक्शन वाले पैकेज को "मुख्य" के रूप में नामित नहीं किया है, तो मैंने पाया कि मल्टी-स्टेज बिल्ड के साथ यह निर्माण कर रहा था लेकिन यह बाइनरी नहीं था।

कोई स्पष्ट त्रुटि संदेश नहीं था।

सुनिश्चित करें कि आपका गो कोड कंटेनरीकृत करने से पहले आपके होस्ट पर बनता और चलता है।

1
Yoker 26 जुलाई 2019, 11:20