返回顶部
首页 > 资讯 > 精选 >Dockerfile 包去
  • 773
分享到

Dockerfile 包去

overflow 2024-02-06 05:02:58 773人浏览 八月长安
摘要

问题内容 我有一个用Go和gin编写的应用程序,这个文件划分如下: main.go controller controllers.go dat

问题内容

我有一个用Go和gin编写的应用程序,这个文件划分如下:

main.go 
    controller 
        controllers.go 
    database    
        database.go 
    middleware 
        middleware.go 
    models 
        models.go 
    routes 
        routes.go 
go.mod 
go.sum 
Dockerfile

在每个文件夹中,我都有一个调用另一个包的包,例如:

package controller

import (
    "log"
    "net/Http"
    "os"

    gomail "gopkg.in/mail.v2"

    "GitHub.com/dgrijalva/Jwt-go"
    "github.com/gin-gonic/gin"
    models "github.com/guilherm5/login-user/models"
)

package routes

import (
    "github.com/gin-gonic/gin"
    controller "github.com/guilherm5/login-user/controller"
    middleware "github.com/guilherm5/login-user/middleware"
)

我的 go.mod 是这样的:

module github.com/guilherm5/login-user



go 1.20

require (
    github.com/dgrijalva/jwt-go v3.2.0+incompatible
    github.com/gin-gonic/gin v1.9.0
    github.com/golang-jwt/jwt v3.2.2+incompatible
    github.com/joho/godotenv v1.5.1
    github.com/lib/pq v1.10.9
    golang.org/x/crypto v0.9.0
    gopkg.in/mail.v2 v2.3.1
)

require (
    github.com/bytedance/sonic v1.8.0 // indirect
    github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 // indirect
    github.com/gin-contrib/sse v0.1.0 // indirect
    github.com/go-playground/locales v0.14.1 // indirect
    github.com/go-playground/universal-translator v0.18.1 // indirect
    github.com/go-playground/validator/v10 v10.11.2 // indirect
    github.com/goccy/go-JSON v0.10.0 // indirect
    github.com/json-iterator/go v1.1.12 // indirect
    github.com/klauspost/cpuid/v2 v2.0.9 // indirect
    github.com/leodido/go-urn v1.2.1 // indirect
    github.com/mattn/go-isatty v0.0.17 // indirect
    github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421 // indirect
    github.com/modern-go/reflect2 v1.0.2 // indirect
    github.com/pelletier/go-toml/v2 v2.0.6 // indirect
    github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
    github.com/ugorji/go/codec v1.2.9 // indirect
    golang.org/x/arch v0.0.0-20210923205945-b76863e36670 // indirect
    golang.org/x/net v0.10.0 // indirect
    golang.org/x/sys v0.8.0 // indirect
    golang.org/x/text v0.9.0 // indirect
    google.golang.org/protobuf v1.28.1 // indirect
    gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
    gopkg.in/yaml.v3 v3.0.1 // indirect
)

所以它遵循我的应用程序流程..

我想制作这个应用程序的 docker 镜像(出于学习目的,我想学习 docker 的基础知识,所以我制作了这个 api 进行测试

docker 镜像:

from golang:1.20 as build 

workdir /mail 

copy go.sum ./
copy go.mod ./
copy main.go ./


run go mod download
run go build -o /appmail

from GCr.io/distroless/base-debian10

workdir /

copy --from=build /mail /mail

expose 4000/

user nonroot:nonroot 

entrypoint ["/appmail"]

尝试构建图像时出现错误:

=> error [build 7/7] run go build -o /appmail             0.7s 
------
 > [build 7/7] run go build -o /appmail:
#13 0.680 main.go:5:2: no required module provides package github.com/guilherm5/login-user/routes; to add it:
#13 0.680       go get github.com/guilherm5/login-user/routes   
------
executor failed running [/bin/sh -c go build -o /appmail]: exit code: 1

有谁知道为什么吗?我真的不知道该怎么解决这个问题,如何将我的包导入到 docker 镜像中?

--编辑

我按照建议更新了我的 dockerfile:

from golang:1.20 as build 

workdir /mail 

copy go.sum ./
copy go.mod ./
copy main.go ./

run go mod tidy
run go mod download
run go build -o /appmail

from gcr.io/distroless/base-debian10

workdir /

copy --from=build /mail /mail

expose 4000/

user nonroot:nonroot 

entrypoint ["/appmail"]

错误:

github.com/guilherm5/login-user imports
#12 9.121       github.com/guilherm5/login-user/routes: cannot find module providing package github.com/guilherm5/login-user/routes: module github.com/guilherm5/login-user/routes: git ls-remote -q origin in /go/pkg/mod/cache/vcs/a7be81f5c5695c6941aa1b7f5a49aa0800b2d648c4d72609eb5feae6f51cf505: exit status 128:
#12 9.121       fatal: could not read Username for 'https://github.com': terminal prompts disabled
#12 9.121 Confirm the import path was entered correctly.        
#12 9.121 If this is a private repository, see https://golang.org/doc/faq#git_https for additional infORMation.
------
executor failed running [/bin/sh -c go mod tidy]: exit code: 1 


正确答案


问题发生在 copy main.go ./ this 上。

golang 将如何查看依赖项/包?

  • 模块缓存:检查modcache中是否存在软件包$gopath/pkg/mod
  • 项目目录:如果在 modcache 中找不到该包,那么它将检查该包是否相对于我们的项目模块根目录存在。 (github.com/guilherm5/login-user/models - 检查名为 models 的目录是否存在。)
  • 远程:如果在模块缓存或项目根目录中找不到包,则从远程存储库中获取它。

在您的情况下,您的项目模块根目录中已经有包(目录),但仅将 main.go 复制到容器系统。 因此,当 go mod tidy 运行时,它无法在缓存或根目录中看到包。然后它尝试从远程拉取它。

我在远程仓库中有代码,那么为什么它没有拉动? 因为存储库是私有的。

解决方案

将所有文件和文件夹复制到容器系统

copy . .

问题将会得到解决。您已经有了多阶段构建,其中只有最终生产构建中必需的文件。

查看

  • go 模块
  • 私有模块
  • “go get”的正确方法是什么私人存储库?

以上就是Dockerfile 包去的详细内容,更多请关注编程网其它相关文章!

--结束END--

本文标题: Dockerfile 包去

本文链接: https://lsjlt.com/news/561246.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Dockerfile 包去
    问题内容 我有一个用go和gin编写的应用程序,这个文件划分如下: main.go controller controllers.go dat...
    99+
    2024-02-06
    overflow
  • docker打包commit和Dockerfile过程
    目录构建镜像commitdockerFiledickerFile 指令使用 dockerFile创建镜像镜像保存、加载镜像保存加载已保存的镜像区别总结构建镜像 构建镜像的两种方法:d...
    99+
    2023-03-12
    docker打包 docker打包commit docker打包Dockerfile
  • docker怎么打包commit和Dockerfile
    本篇内容主要讲解“docker怎么打包commit和Dockerfile”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“docker怎么打包commit和Dockerfile”吧!构建镜像构建镜像...
    99+
    2023-07-05
  • Dockerfile中编译、打包、部署spring boot项目
    1、Dockerfile 1.1、什么是Dockerfile         Dockerfile是自动构建docker镜像的配置文件,将镜像构建过程通过指令的方式定义在Dockerfile中。配合docker build命令行可以实现自动...
    99+
    2023-09-05
    spring boot 后端 java
  • dockerfile-python
    # # Python Dockerfile # # https://github.com/dockerfile/python # # Pull base p_w_picpath. FROM ubuntu # Install Python...
    99+
    2023-01-31
    dockerfile python
  • Golang chromedp dockerfile
    在现代软件开发中,Docker已经成为了一个不可或缺的工具,它能够帮助开发人员快速构建、部署和管理应用程序。而Golang作为一种高效、简洁的编程语言,也备受开发者的青睐。那么,如何在...
    99+
    2024-02-09
    golang开发
  • 使用maven war包打包去除jar包瘦身
    1、pom文件配置 1.1 添加maven-dependency-plugin插件用于将引用的jar包拷贝到指定的路径 便于后续tomcat启动指定依赖包路径 <!--拷贝...
    99+
    2024-04-02
  • 如何使用maven war包打包去除jar包
    这篇文章主要介绍“如何使用maven war包打包去除jar包”,在日常操作中,相信很多人在如何使用maven war包打包去除jar包问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用maven war...
    99+
    2023-06-20
  • Dockerfile的编写
    Docker 工具是当今最受欢迎的容器化工具,可以将我们的应用程序打包成轻量、可移植的容器并快速部署到云端。而 Dockerfile 是用于定义 Docker 镜像构建流程的文本文件,它包含了构建 Docker 镜像的所有必要信息。 在这篇...
    99+
    2023-09-23
    docker 容器 java
  • Dockerfile 构建Python
    创建Dockerfile 首先,创建目录python,用于存放后面的相关东西。 ubuntu@VM-0-4-ubuntu:~$ mkdir -p ~/python ~/python/myapp myapp目录将映射为python容器配置...
    99+
    2023-01-31
    Dockerfile Python
  • Dockerfile文件详解
    目录什么是dockerfileDockerfile的基本结构Dockerfile文件说明FROMMAINTAINERRUNshell执行exec执行ADDCOPYCMDENTRYPO...
    99+
    2024-04-02
  • 使用springboot 打包插件去除jar包瘦身
    1、pom文件配置 1.1 添加maven-dependency-plugin插件用于将引用的jar包拷贝到指定的路径 便于后续tomcat启动指定依赖包路径 <!--拷贝...
    99+
    2024-04-02
  • uniAPP打包进不去怎么办
    最近,有很多开发者反映在使用uniAPP进行打包时遇到了进不去的问题。在这篇文章中,我们将探讨这个问题,并提供一些解决方案。首先,我们需要了解uniAPP是什么。uniAPP是一个基于Vue框架的跨平台开发工具,可以快速地开发出iOS、An...
    99+
    2023-05-14
  • dockerfile的使用及使用dockerfile部署springboot项目的过程
    目录一、dockerfile概述1、dockerfile基础2、Docker执行Dockerfile的大致流程3、镜像、容器、dockerfile的关系二、dockerfile常用保...
    99+
    2023-05-15
    dockerfile部署springboot项目 dockerfile部署springboot dockerfile使用
  • Dockerfile部署SpringBoot项目
    Dockerfile部署SpringBoot项目 文章目录 利用Dockerfile部署SpringBoot项目 1、创建一个SpringBooot项目并且打成jar包2、在Linux中...
    99+
    2023-09-29
    spring boot java docker
  • docker build与Dockerfile问题
    目录docker build与Dockerfiledocker build常用命令Dockerfiledocker build 指定dockerfile总结docker build与...
    99+
    2023-03-09
    docker build docker Dockerfile docker build与Dockerfile
  • dockerfile构建flask环境
    简介 Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义镜像 指令及说明 指令 说明 FROM 指定基础镜像 且必须是第一条指令 MAINTAINER 指定镜像作者 RUN 运...
    99+
    2023-01-31
    环境 dockerfile flask
  • springboot中的dockerfile使用
    目录环境一、创建springboot项目选择InitalizrServiceURL二、创建Dockerfile文件三、Springboot用maven打包遇到的坑解决办法四、制作Do...
    99+
    2024-04-02
  • dockerfile的使用教程
    这篇文章主要介绍“dockerfile的使用教程”,在日常操作中,相信很多人在dockerfile的使用教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”dockerfile的使用教程”的疑惑有所帮助!接下来...
    99+
    2023-06-04
  • java驱动包如何添加进去
    要将Java驱动包添加到项目中,可以按照以下步骤进行操作:1. 打开你的Java项目,在项目的根目录下创建一个名为"lib"的文件夹...
    99+
    2023-09-21
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作