![](/img/trans.png)
[英]`package_name': 'package' not found in aapt output (RuntimeError) while running calabash in docker
[英]Building a Docker container for Golang code: package PACKAGE_NAME is not in GOROOT
我构建了一个小型 Golang 应用程序,我想在 Docker 容器上运行它。
我写了以下 Dockerfile:
# syntax=docker/dockerfile:1
FROM golang:1.16-alpine
WORKDIR /app
COPY go.mod ./
COPY go.sum ./
RUN go mod download
COPY ./* .
RUN go env -w GO111MODULE=on
RUN go build -o /docker-gs-ping
EXPOSE 8080
CMD [ "/docker-gs-ping" ]
但是,当我运行命令时:
docker build --tag docker-gs-ping .
我收到错误:
#16 0.560 在 /app #16 0.560 main.go:4:2: package MyExercise/controllers 不在 GOROOT (/usr/local/go/src/我的练习/控制器)
我想提一下,package 控制器存在于我的工作目录中,与此目录关联的所有文件都放在 MyExercise/controllers 文件夹中。
你知道如何解决这个错误吗?
编辑:这是目录树:
.
├── Dockerfile
├── REDAME
├── controllers
│ └── controller.go
├── go.mod
├── go.sum
├── logging
│ └── logger.go
├── main.go
├── models
│ └── location.go
├── output.log
├── repositories
│ ├── csv_file_repository.go
│ ├── csv_file_repository_builder.go
│ ├── csv_file_repository_builder_test.go
│ ├── csv_file_repository_test.go
│ ├── repository_builder_interface.go
│ ├── repository_interface.go
│ └── resources
│ └── ip_address_list.txt
└── services
├── ip_location_service.go
├── ip_location_service_test.go
├── rate_limiter_service.go
├── rate_limiter_service_interface.go
├── rate_limiter_service_test.go
└── time_service.go
main.go 中的导入部分:
import (
"MyExercise/controllers"
"MyExercise/logging"
"MyExercise/repositories"
"MyExercise/services"
"errors"
"github.com/gin-gonic/gin"
"os"
"strconv"
"sync"
)
在您的应用程序目录中执行go mod vendor
。 文档。
用于构建容器docker build -t app:v1.
Dockerfile
FROM golang:1.16-alpine
WORKDIR /app/
ADD . .
RUN go build -o /app/main
EXPOSE 5055
CMD [ "/app/main" ]
实际上你的 Dockerfile 有问题。
COPY./*.
实际上并没有按照你的想法去做。 它将以平面结构递归地将所有文件复制到/app
目录。
将您的 Dockerfile 修改为:
# syntax=docker/dockerfile:1
FROM golang:1.16-alpine
WORKDIR /app
ADD . /app
RUN go mod download
RUN go env -w GO111MODULE=on
RUN go build -o /docker-gs-ping
EXPOSE 8080
CMD [ "/docker-gs-ping" ]
基本上,删除所有COPY
指令并替换为单个ADD
指令
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.