小编这次要给大家分享的是码头工人镜像怎么部署去项目,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所收获。
依赖知识
- <李>去交叉编译基础李> <>李码头工人基础李> <>李Dockerfile自定义镜像基础李> <>李docker-compose编排文件编写基础李>
当然,一点也不会也可以按照这个步骤部署完成,不过可能中间如果出点小问题,会不知道怎么解决,当然你也可以留言。
我是在mac环境上开发测试的,如果你是在windows上可能有一点出入,但应该不会有啥大问题。
- <李>码头工人李>
我这里就写一个最简单的hello world程序吧,监听端口是80端口。
新建一个<代码>主要。代码>文件,内容如下:
主要包 导入( “fmt" “log" “;net/http" ) http func sayHello (w。ResponseWriter r * http.Request) { fmt。流(w,“你好world") } 函数main () { sayHello http.HandleFunc(“/?//注册URI路径与相应的处理函数 log.Println(“【默认项目】服务启动成功监听端口80“) 呃:=http.ListenAndServe (“0.0.0.0:80" nil) 如果呃!=nil { log.Fatal (“ListenAndServe:“呃) } }
我是在mac上开发的,需要用到去的交叉编译,如果对交叉编译不熟悉的,可以查下文档,或者直接复制我下面的命令进行编译。
我们是要跑在<代码>码头工人> 代码里面,基础<代码> golang 代码>这个镜像跑的,所以需要把他编译成兼容<代码> i386> 代码处理器的程序。
sudo env美好=linux GOARCH=386去构建主要。去
这个编译完成后,本地会多出一个主要<代码> 代码>程序,暂时不用管它备用就行。
新建一个文件夹,里面新建一个<代码> Dockerfile 代码>文件,再在里面新建<代码>软件> 代码,脚本<代码> 代码>两个文件。把上一步的主要<代码> 代码>程序放到<代码>软件> 代码文件夹里面,在<代码> 代码>脚本里面新建一个<代码>构建。sh 代码>脚本文件,文件内容先不管,等下会说。
具体的文件结构是这样。
。 ├──Dockerfile ├──应用 │└──主要 └──脚本 └──构建。sh
下面就是编写<代码> Dockerfile 代码>文件内容了,内容我先上代码:
这里解释下:
<代码>与代码>是集成自哪个镜像,我们是去程序官方提供了一个<代码> golang 代码>这样的镜像,我们可以直接使用。
代码> <代码>维护者是维护这名字。
<代码> WORKDIR> 代码工作目录。
<代码> 代码>这副本是一个复制命令,把本地的所有文件复制到工作目录下。
<代码> 代码>暴露这是对方开发的端口,我默认是开放80端口,这里可根据实际情况修改
<代码> CMD> 代码执行一个带参数的命令,我这样写,是为了让镜像启动时去执行<代码>脚本/构建。sh> 代码的脚本,这个脚本里面是写的启动去程序的命令。
这里我把内容粘贴出来:
# !/usr/bin/env bash cd/去/src/app/,,主要。/就这两行。
这属于<代码>码头工人> 代码的知识了,我把命令粘贴出来。
码头工人建造- t web。
- <李>这个命令执行,如果本地没有<代码> golang 代码>这个镜像的话,他会自己先去官方镜像库拉取这个镜像再编译,我们静静的等他就行李> <李> <代码> web 代码>这个参数是你最后编译后的镜像名字,可以随意修改,也可以加上版本号比如:<代码> web: v1 代码>。李>
看到上面这个输出,就说明编译成功了,在你的本地镜像里面就有了一个名为<代码> web> 代码的镜像。可以使用<代码> 代码>进码头工人图像行查询:
到这里属于我们的最后一步了,如果用我们刚编译的<代码> web代码>来运行我们的去程序:
版本:& # 39;2 & # 39; 网络: 基本: 服务: 世界: container_name:世界 图片:web 港口: ——“8099:80" 卷: ——。/app//世界://src/app: rw光碟 网络: ——基本码头工人镜像怎么部署去项目