第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Go 應(yīng)用程序在使用 docker-compose 運行時失敗并退出

Go 應(yīng)用程序在使用 docker-compose 運行時失敗并退出

Go
守著一只汪 2023-05-04 16:50:24
我在一個運行 Ubuntu 16.04.5 x64的虛擬機的刪除服務(wù)器上運行所有這些操作 。我的 Go 項目的 Dockerfile 如下所示:FROM golang:latestADD . $GOPATH/src/example.com/myappWORKDIR $GOPATH/src/example.com/myappRUN go build#EXPOSE 80#ENTRYPOINT $GOPATH/src/example.com/myapp/myappENTRYPOINT ./myapp#CMD ["./myapp"]當我使用 運行 docker 容器時docker-compose up -d,Go 應(yīng)用程序退出,我在 docker 日志中看到:我的應(yīng)用_1 | /bin/sh: 1: ./myapp: Exec 格式錯誤 docker_myapp_1 已退出,代碼為 2如果我使用以下方式定位圖像docker images并運行圖像: docker run -it 75d4a95ef5ec 我可以看到我的 golang 應(yīng)用程序運行得很好:viper 環(huán)境是:開發(fā) HTTP 服務(wù)器監(jiān)聽地址:“:3005”當我用谷歌搜索這個錯誤時,有些人建議使用一些特殊標志進行編譯,但我在同一臺 Ubuntu 主機上運行這個容器,所以我真的很困惑為什么這不能使用 docker。我的 docker-compose.yml 看起來像:version: "3"services:  openresty:    build: ./openresty    ports:     - "80:80"     - "443:443"    depends_on:      - myapp    env_file:     - '.env'    restart: always  myapp:    build: ../myapp    volumes:     - /home/deploy/apps/myapp:/go/src/example.com/myapp    ports:      - "3005:3005"    depends_on:      - db      - redis      - memcached    env_file:      - '.env'  redis:    image: redis:alpine    ports:    - "6379:6379"    volumes:     - "/home/deploy/v/redis:/data"    restart: always  memcached:    image: memcached    ports:      - "11211:11211"    restart: always  db:    image: postgres:9.4    volumes:      - "/home/deploy/v/pgdata:/var/lib/postgresql/data"    restart: always
查看完整描述

2 回答

?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

你的docker-compose.yml文件說:

volumes:
 - /home/deploy/apps/myapp:/go/src/example.com/myapp

這意味著您的主機系統(tǒng)的源目錄已掛載并隱藏了 Dockerfile 構(gòu)建的所有內(nèi)容。 ./myapp主機的可執(zhí)行文件副本myapp,如果有什么不同(也許您有 MacOS 或 Windows 主機)將導致此錯誤。

對于解釋型語言,這是一種流行的設(shè)置,開發(fā)人員希望在不運行正常的測試-構(gòu)建-部署序列的情況下運行他們的應(yīng)用程序,但對于像 Go 這樣您別無選擇的編譯型語言來說,它實際上沒有意義。我會完全刪除這個塊。


查看完整回答
反對 回復 2023-05-04
?
神不在的星期二

TA貢獻1963條經(jīng)驗 獲得超6個贊

Go 容器因此停止運行:


WORKDIR $GOPATH/src/example.com/myapp

RUN go build


#EXPOSE 80


#ENTRYPOINT $GOPATH/src/example.com/myapp/myapp

ENTRYPOINT ./myapp

您正在將目錄切換到構(gòu)建應(yīng)用程序的$GOPATH/src/example.com/myapp ,但是,您的入口點指向了錯誤的位置。


要解決此問題,您可以將應(yīng)用程序復制到根目錄并保留相同的ENTRYPOINT命令,或者將應(yīng)用程序復制到其他位置并傳遞完整路徑,例如:


ENTRYPOINT /my/go/app/location


查看完整回答
反對 回復 2023-05-04
  • 2 回答
  • 0 關(guān)注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號