iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go Webapp 的 Dockerfile 目录结构
  • 432
分享到

Go Webapp 的 Dockerfile 目录结构

2024-04-04 23:04:35 432人浏览 泡泡鱼
摘要

有志者,事竟成!如果你在学习golang,那么本文《Go WEBapp 的 Dockerfile 目录结构》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就

有志者,事竟成!如果你在学习golang,那么本文《Go WEBapp 的 Dockerfile 目录结构》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我正在用 go 开发一个测试 hello 应用程序,它将可以访问 postgres db。这将使用有状态集在 kubernetes 中发布,并有一个 pod 和两个容器镜像(一个用于 pgsql,一个用于 goapp)。

├── hello-app
|   ├── templates
|       ├── file1.gohtml
|       ├── file2.gohtml
|       └── file3.gohtml
|   ├── dockerfile
|   └── hello-app.go
├── psql
|   ├── dockerfile
|   ├── createuser.sh
|   └── createdb.sql
├── yaml
|   └── statefulset.yaml

我无法将 dockerfile 和 go 应用程序结合起来。在我的第一段 go 代码中,我使用“template.must”函数来引用“templates”目录。显然,当我将其作为容器运行时,目录结构是不同的。

我还没有完全弄清楚如何在 dockerfile 中执行此操作,并且正在寻找一些指导。

/app/hello-app.go

package main

import (

        "database/sql"
        "fmt"
        "os"
        _ "GitHub.com/lib/pq"
        "html/template"
        "net/Http"
        "strconv"
)

var db *sql.db
var tpl *template.template

func init() {
        host := os.getenv("variable")
        var err error
        db, err = sql.open("postgres", "postgres://user:passWord@"+host+"/dbname?sslmode=disable")
        if err != nil {
                panic(err)
        }

        if err = db.ping(); err != nil {
                panic(err)
        }
        fmt.println("you connected to your database.")

        tpl = template.must(template.parseglob("templates/*.gohtml"))

/app/dockerfile

FROM golang:1.8-alpine
RUN apk add --update go git
RUN go get github.com/lib/pq/...
ADD . /go/src/hello-app
RUN go install hello-app
Add templates templates/
ENV USER=username \
    PASSWORD=password \
    DB=dbname \
    HOST=hostname \
    PORT=5432

FROM alpine:latest
COPY --from=0 /go/bin/hello-app/ .
ENV PORT 4040
CMD ["./hello-app"]

当我在 kubernetes (GCp) 中运行它时,我在 hello-app 容器上收到以下日志条目。

恐慌:html/template:模式不匹配文件:templates/*.gohtml goroutine 1 [运行]: html/template.must


解决方案


在 dockerfile 的第二阶段,您仅复制前一阶段的 go 二进制文件。您还必须将 templates 目录复制到第二阶段,以便 go 二进制文件可以引用您的 html 模板:

from golang:1.8-alpine
run apk add --update go git
run go get github.com/lib/pq/...
add . /go/src/hello-app
run go install hello-app
env user=username \
    password=password \
    db=dbname \
    host=hostname \
    port=5432

from alpine:latest
copy --from=0 /go/bin/hello-app/ .
copy --from=0 /go/src/hello-app/templates ./templates
env port 4040
cmd ["./hello-app"]

我不确定这是否是常见的做法,但是当我对构建过程中哪个文件夹中的内容感到困惑时,我只需 ls 相关目录即可更好地了解构建过程中可能发生的情况构建过程:

RUN ls

显然,一旦完成 dockerfile,您就可以删除这些行。

该错误是因为 template.parseglob 在模板目录中找不到任何匹配的文件。尝试使用 copy <your local gopath/src/hello-app> <docker dir path> 复制整个目录,而不是 copy --from=0 /go/bin/hello-app/ .。此外,当您构建应用程序时,您的模板文件夹仍将位于源文件夹中,因此这也可能导致问题。解决方案是在应用程序目录中运行 go buildin 并使用我拥有的 copy 命令。

理论要掌握,实操不能落!以上关于《Go Webapp 的 Dockerfile 目录结构》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注编程网公众号吧!

您可能感兴趣的文档:

--结束END--

本文标题: Go Webapp 的 Dockerfile 目录结构

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go Webapp 的 Dockerfile 目录结构
    有志者,事竟成!如果你在学习Golang,那么本文《Go Webapp 的 Dockerfile 目录结构》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就...
    99+
    2024-04-04
  • python_目录结构
    目录组织方式关于如何组织一个较好的Python工程目录结构,已经有一些得到了共识的目录结构。在Stackoverflow的这个问题上,能看到大家对Python目录结构的讨论。 这里面说的已经很好了,我也不打算重新造轮子列举各种不同的方式,这...
    99+
    2023-01-31
    结构 目录
  • Linux目录树的结构
    本篇内容介绍了“Linux目录树的结构”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录树的主要部分有root(/)、/USR、/var、/...
    99+
    2023-06-13
  • Python项目通用的目录结构总结
    一个好的项目结构会让我们在开发中更加得心应手。 对于Web项目,我们通常采用Flask或Django等框架,会有一套适合这种项目的工程目录。 对于爬虫项目,通常有Scrapy等开源框架,也会提供一套适合这种项目的工程目录。 对...
    99+
    2023-01-31
    结构 目录 项目
  • Java项目的目录结构详解
    一个java web项目 目录分为两个部分 ① Web应用的根目录下子目录WEB-INF,里面内容不能被客户端访问的,包括专用Web应用程序软件,包括Servlet类文件、部署描述符...
    99+
    2024-04-02
  • linux的标准目录结构
    这篇文章主要讲解了“linux的标准目录结构”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“linux的标准目录结构”吧!linux标准目录结构: / root --- 启动Linux时使用的...
    99+
    2023-06-13
  • MySQL数据目录结构
    从概念上讲,大多数关系数据库系统是相似的:它们有一系列数据库组成,每个数据库包含一系列数据库表,但每个系统有各自组织其管理的数据方式,MySQL也不例外。缺省地,所有由MySQL服务器mysqld管理的数据...
    99+
    2024-04-02
  • springboot目录结构是怎样的
    在Spring Boot项目中,通常会有以下目录结构: src/main/java:存放Java源代码文件。 src/main/r...
    99+
    2024-04-02
  • tomcat目录的结构有哪些
    这期内容当中小编将会给大家带来有关tomcat目录的结构有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。tomcat目录结构简介如果我们有一个web应用,名称为“mail”(同时也是web应用所在目录...
    99+
    2023-05-31
    tomcat omc tomca
  • Linux目录结构是怎样的
    今天小编给大家分享一下Linux目录结构是怎样的的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。使用 Linux 时,通过命令...
    99+
    2023-06-28
  • linux的目录结构有哪些
    linux中目录的结构有:1.可分享目录,可以分享给其他系统挂载使用;2.不可分享目录,装置文件或与程序有关的socket文件;3.不变目录,数据是不会经常变动;4.可变动目录,经常改变数据;linux中目录的结构有以下几种可分享目录可分享...
    99+
    2024-04-02
  • MySQL目录结构与源码
    MySQL目录结构与源码 前言一、主要目录结构二、MySQL 源代码获取 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个...
    99+
    2023-09-04
    mysql 数据库
  • vue实现目录树结构
    本文实例为大家分享了vue实现目录树结构的具体代码,供大家参考,具体内容如下 效果图 代码 组件部分 components/leftTree.vue <template>...
    99+
    2024-04-02
  • Linux目录结构有哪些
    这篇文章主要介绍了Linux目录结构有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux的文件系统是采用级层式的树状目录结构,在此结构中最上层是根目录“/”,然后在...
    99+
    2023-06-27
  • jboss目录结构是怎么样的
    这篇文章给大家分享的是有关jboss目录结构是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JBoss的目录:  bin           &...
    99+
    2023-06-03
  • vue3项目目录结构示例详解
    目录一、vue3项目的目录结构详解二、部分主要文件详解1、index.html2、main.js(main.ts)3. package.json三、其他说明1. node版本错误2....
    99+
    2023-02-03
    vue3.0目录结构 vue项目目录结构 vue项目的目录结构
  • Dockerfile文件的基本结构是什么
    本篇内容介绍了“Dockerfile文件的基本结构是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是dockerfileDocker...
    99+
    2023-07-02
  • 怎么创建Django目录结构
    这篇文章主要介绍怎么创建Django目录结构,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、先创建Django项目,只需要在安装了Django之后,在命令行中输入:django-admin startpr...
    99+
    2023-06-14
  • Linux怎么创建目录结构
    在Linux系统中,可以使用以下命令来创建目录结构: 使用mkdir命令创建单个目录: mkdir directory_name...
    99+
    2024-04-08
    linux
  • python 软件目录结构规范
    为什么要设计好目录结构"设计项目目录结构",就和"代码编码风格"一样,属于个人风格问题。对于这种风格上的规范,一直都存在两种态度:  1.一类同学认为,这种个人风格问题"无关紧要&...
    99+
    2023-01-30
    结构 目录 软件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作