前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用golang官方Docker镜像运行项目

用golang官方Docker镜像运行项目

作者头像
程序员欣宸
发布2019-05-27 08:46:34
1.7K0
发布2019-05-27 08:46:34
举报
文章被收录于专栏:实战docker实战docker

环境信息

本次实战的环境如下:

  1. 操作系统:macOS Mojave(10.14.3)
  2. Docker:18.09.2
  3. go镜像:1.11.5

go工程简介

本次实战要运行的go程序,一共有两个package:

  1. 名为service的文件夹下有个名为tools.go的文件,内容如下:
代码语言:javascript
复制
package service

import (
  "fmt"
)

func Log(str string){
  fmt.Println(str)
}
  1. 名为hello的文件夹下有个名为helloworld.go的文件,内容如下:
代码语言:javascript
复制
package main

import "service"

func main() {
  service.Log("abc")
}

以上就是本次实战的代码,功能很简单:一个package中的main调用另一个package提供的api,最终在控制台打印abc,接下来借助Docker来编译构建运行上述代码;

两个命令运行hellowrold.go

  1. 假设文件夹service和hello都在目录/Users/will/temp/201902/24下;
  2. 命令行进入目录/Users/will/temp/201902/24,执行以下命令,即可创建一个Dockerfile文件,用于稍后的镜像制作:
代码语言:javascript
复制
rm -f ./Dockerfile \
&& tee ./Dockerfile <<-'EOF'
FROM golang:1.11.5
WORKDIR /go/src
COPY . .
RUN go get -d -v ./...
RUN go install -v ./...
EOF

从Dockerfile内容可见,该镜像做的事很简单:先将当前目录下的go源文件夹复制到镜像内,再执行go install命令编译构建,生成可执行文件; 3. 执行以下命令,先构建镜像再创建一次性容器,该容器启动后立即运行镜像中构件好的可执行文件:

代码语言:javascript
复制
docker build -t my-golang-app . \
&& docker run -it --rm --name my-running-app my-golang-app hello

输出如下:

代码语言:javascript
复制
$ docker build -t my-golang-app . \
> && docker run -it --rm --name my-running-app my-golang-app hello
Sending build context to Docker daemon   5.12kB
Step 1/5 : FROM golang:1.11.5
 ---> 901414995ecd
Step 2/5 : WORKDIR /go/src
 ---> Using cache
 ---> 2aa585932b40
Step 3/5 : COPY . .
 ---> Using cache
 ---> cfc695390f08
Step 4/5 : RUN go get -d -v ./...
 ---> Using cache
 ---> 4c71f0716bac
Step 5/5 : RUN go install -v ./...
 ---> Using cache
 ---> 5d950c32c83f
Successfully built 5d950c32c83f
Successfully tagged my-golang-app:latest
abc

可见go程序已经正常运行;

以上就是在Docker运行golang程序的快捷方式,如果不想配置go环境,可以用此方式快速运行程序;

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年03月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境信息
  • go工程简介
  • 两个命令运行hellowrold.go
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档