Rumah >pembangunan bahagian belakang >Golang >Fail boleh laku tidak ditemui pada bekas docker
Saya menghadapi beberapa masalah semasa cuba menjalankan perintah cmd
di dalam bekas docker menggunakan aplikasi go.
Ini adalah output yang saya dapat:
golang-api | /bin/sh: ./server: not found golang-api exited with code 127
Ini ialah dockerfile
from golang:1.18-alpine run apk add g++ && apk add make workdir /app copy go.mod go.sum ./ run go mod download copy . . run make build expose 8000 cmd ./server
Ini ialah fail make yang bertanggungjawab untuk arahan bina:
linux_amd64 = goos=linux goarch=amd64 cgo_enabled=1 go111module=on migrate: cd cmd/migrations/$(folder) && go run main.go build: cd cmd && $(linux_amd64) go build -a -v -tags musl -o server
Juga docker-compose.yml
version: '3.1' services: api: build: dockerfile: dockerfile context: . container_name: golang-api ports: - "8000:8000" restart: unless-stopped depends_on: - db environment: - postgres_url=$postgres_url db: image: postgres restart: always environment: postgres_user: postgres postgres_password: postgres ports: - '5432:5432'
Keluaran penuh:
Building api Sending build context to Docker daemon 74.24kB Step 1/9 : FROM golang:1.18-alpine ---> 6078a5fce1f5 Step 2/9 : RUN apk add g++ && apk add make ---> Using cache ---> 2a85b9182b80 Step 3/9 : WORKDIR /app ---> Using cache ---> baf1e6b7047c Step 4/9 : COPY go.mod go.sum ./ ---> Using cache ---> 1f2d031bc1b0 Step 5/9 : RUN go mod download ---> Using cache ---> 471d6f24e6a9 Step 6/9 : COPY . . ---> eaa86ff7cb1b Step 7/9 : RUN make build ---> Running in d6ae6ce79222 cd cmd && GOOS=linux GOARCH=amd64 CGO_ENABLED=1 GO111MODULE=on go build -a -v -tags musl -o server internal/goos internal/goarch internal/race internal/unsafeheader internal/goexperiment runtime/internal/syscall internal/cpu sync/atomic runtime/internal/atomic internal/itoa math/bits internal/abi runtime/internal/math runtime/internal/sys unicode/utf8 unicode container/list crypto/internal/subtle crypto/subtle unicode/utf16 vendor/golang.org/x/crypto/cryptobyte/asn1 internal/nettrace vendor/golang.org/x/crypto/internal/subtle encoding github.com/mymachine/my-api/internal/controllers/dto github.com/mymachine/my-api/internal/controllers/helpers internal/bytealg math runtime internal/reflectlite sync internal/testlog internal/singleflight math/rand runtime/cgo errors sort internal/oserror strconv path vendor/golang.org/x/net/dns/dnsmessage io crypto/elliptic/internal/fiat syscall golang.org/x/text/internal/tag hash bytes strings hash/crc32 reflect crypto crypto/internal/randutil crypto/hmac crypto/rc4 net/http/internal/ascii vendor/golang.org/x/crypto/hkdf regexp/syntax github.com/jackc/chunkreader/v2 bufio crypto/elliptic/internal/nistec internal/syscall/unix time internal/syscall/execenv vendor/golang.org/x/text/transform golang.org/x/crypto/pbkdf2 golang.org/x/text/transform golang.org/x/text/runes golang.org/x/text/width regexp internal/poll io/fs context github.com/mymachine/my-api/internal/entities github.com/jackc/pgconn/internal/ctxwatch embed os github.com/jinzhu/inflection github.com/jinzhu/now internal/fmtsort encoding/binary crypto/ed25519/internal/edwards25519/field crypto/md5 crypto/sha512 crypto/cipher crypto/sha256 crypto/sha1 encoding/base64 fmt internal/godebug encoding/pem crypto/ed25519/internal/edwards25519 path/filepath vendor/golang.org/x/crypto/internal/poly1305 io/ioutil internal/intern vendor/golang.org/x/crypto/curve25519/internal/field vendor/golang.org/x/sys/cpu net/netip crypto/aes crypto/des vendor/golang.org/x/crypto/chacha20 github.com/jackc/pgio github.com/jackc/pgpassfile os/exec os/signal net vendor/golang.org/x/crypto/chacha20poly1305 math/big encoding/hex net/url compress/flate vendor/golang.org/x/crypto/curve25519 log vendor/golang.org/x/text/unicode/norm vendor/golang.org/x/text/unicode/bidi vendor/golang.org/x/net/http2/hpack mime mime/quotedprintable compress/gzip net/http/internal database/sql/driver github.com/mymachine/my-api/internal/pkg/errors encoding/json github.com/jackc/pgservicefile vendor/golang.org/x/text/secure/bidirule golang.org/x/text/internal/language database/sql golang.org/x/text/unicode/norm golang.org/x/text/unicode/bidi vendor/golang.org/x/net/idna os/user crypto/rand encoding/asn1 crypto/dsa crypto/elliptic crypto/ed25519 crypto/rsa github.com/jackc/pgproto3/v2 golang.org/x/text/internal/language/compact golang.org/x/text/secure/bidirule github.com/jackc/pgx/v4/internal/sanitize golang.org/x/text/language go/token vendor/golang.org/x/crypto/cryptobyte crypto/x509/pkix gorm.io/gorm/utils gorm.io/gorm/logger encoding/gob go/scanner golang.org/x/text/internal github.com/joho/godotenv crypto/ecdsa go/ast golang.org/x/text/cases github.com/joho/godotenv/autoload golang.org/x/text/secure/precis gorm.io/gorm/clause gorm.io/gorm/schema gorm.io/gorm net/textproto vendor/golang.org/x/net/http/httpproxy github.com/google/uuid crypto/x509 github.com/jackc/pgtype mime/multipart vendor/golang.org/x/net/http/httpguts crypto/tls gorm.io/gorm/migrator gorm.io/gorm/callbacks net/http/httptrace github.com/jackc/pgconn net/http github.com/jackc/pgconn/stmtcache github.com/jackc/pgx/v4 github.com/jackc/pgx/v4/stdlib gorm.io/driver/postgres github.com/mymachine/my-api/internal/infrastructure/repository github.com/mymachine/my-api/configs github.com/mymachine/my-api/internal/services github.com/mymachine/my-api/internal/services/transaction github.com/mymachine/my-api/internal/controllers/handlers/health github.com/gorilla/mux github.com/mymachine/my-api/internal/controllers/handlers/transaction github.com/mymachine/my-api/internal/router github.com/mymachine/my-api/cmd Removing intermediate container d6ae6ce79222 ---> 621aa6a266de Step 8/9 : EXPOSE 8000 ---> Running in 3cbd17d32c37 Removing intermediate container 3cbd17d32c37 ---> 754f71a7753e Step 9/9 : CMD ./server ---> Running in dfcdc8cd45ce Removing intermediate container dfcdc8cd45ce ---> 511dbf89a001 Successfully built 511dbf89a001 Successfully tagged my-api_api:latest Creating my-api_db_1 ... done Creating golang-api ... done Attaching to my-api_db_1, golang-api golang-api | /bin/sh: ./server: not found
Soalan selesai.
Entah bagaimana, arahan RUN cd cmd
nampaknya tidak menjana fail dalam direktori yang dijangkakan.
Cuba gunakan RUN go build cmd/main.go
daripada menggunakan makefile berfungsi, @paltaa juga menunjukkan perkara ini dalam ulasan.
Atas ialah kandungan terperinci Fail boleh laku tidak ditemui pada bekas docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!