使用docker构建golang线上部署环境的步骤详解
作者:jackluo 发布时间:2024-04-25 13:16:44
Docker用于开发
Docker不仅用于部署,它还可以用于开发。
1、为什么要在开发中使用Docker
主要有以下几个原因。
1)一致的开发环境
使用Docker,可以保证整个研发团队使用一致的开发环境。
2)开发环境与最终的生产环境保持一致
这减少了部署出错的可能性。
3)简化了编译和构建的复杂性
对于一些动辄数小时的编译和构建工作,可以用Docker来简化。
4)在开发时只需Docker
无需在自己的开发主机上搭建各种编程语言环境。
5)可以使用同一编程语言的多个版本
可以使用同一编程语言(如python, python, ruby, ruby, java, node)等的多个版本,无需解决多版本冲突的问题。
6)部署很简单
应用程序在容器中运行,和在生产环境中部署运行是一样的。只需打包你的代码并部署到带有同样镜像的服务器上,或者是把代码连同原镜像建立一个新Docker镜像再直接运行新镜像。
7)使用自己喜欢的开发IDE
仍然可以继续使用自己喜欢的开发IDE,无需运行VirtualBox虚拟机或SSH。
引言
公司最近开发了一个项目是用golang 写的,现在要部署到线上环境去,又不想在服务器上装单独的golang,决定用docker 封装下,直接打到镜像里面,然后就直接在hub.docker.com上面搜了下golang的镜像,直接就docker pull golang
最新的是1.9的版本
然后参考官方的文档弄了下Dockerfile大概是这样:
FROM golang
MAINTAINER jackluo
#指定工作目录
WORKDIR /go/src/ActivitApi
COPY . .
CMD ["/bin/bash", "build.sh"]
build.sh里面的代码是这样,大概就是进入目录,编译golang ,最后运行编译好的server 文件
#!/usr/bin/env bash
cd /go/src/ActivitApi/server && go build && ./server
其实可以直接运行编译好的.server 文件,因为每次启动的时候,它才去编译,可能启个服务,需要几秒钟的时间,我们写的大概编译再启动需要10秒左右的时间
最后启用docker
#!/usr/bin/env bash
docker stop apihdtest
docker rm apihdtest
docker run -d --name apihdtest \
-p 17071:17071 \
--link mysql:mysql.io \
--link redis:redis.io \
-v $(pwd):/go/src/ActivitApi \
activityapi
#docker exec -it apihdtest /bin/bash /go/src/ActivitApi/build.sh
然后这个就启起来了
最后,我们看下完整的截图吧
来源:https://www.cnblogs.com/jackluo/p/7819975.html


猜你喜欢
- 流程:模拟登录→获取Html页面→正则解析所有符合条件的行→逐一将符合条件的行的所有列存入到CSVData[]临时变量中→写入到CSV文件中
- Django中如何在Model保存前做一定的固定操作,比如写一句日志?关键词: 信号利用Django的Model的Signal Dispat
- 1、需求用户输入当前目录下任意文件名,程序完成对该文件的备份功能。备份文件名为xx[备份]后缀,例如:test[备份].txt。2、步骤接收
- 年前帮manager 招GUI设计实习生 (PS. 这个实习生职位依然open,欢迎有兴趣的同学来投,邮箱jj.ying [at] hp.c
- 在开发的过程中,经常会遇到需要给别人提供一个输入框,然后别人输入一些ID,或者关键字的东西,例如wordpress的后台的标签输入框:这个就
- python在mysql中插入null空值sql = “INSERT INTO MROdata (MmeUeS1apId) VALUES (
- 目录背景分析数据模拟1、创建两个表:员工表和部门表2、创建两个函数:生成随机字符串和随机编号3、编写存储过程,模拟500W的员工数据4、编写
- #/usr/bin/env python#-*- coding:utf-8 -*-"""1.解析 cronta
- 想学习Python3,但是暂时又离不开Python2。在Windows上如何让它们共存呢?目前国内网站经常会让大家把其中一个python.e
- 前言本文将深入研究 preg_replace /e 模式下的代码执行问题,其中包括 preg_replace 函数的执行过程分析、正则表达式
- 比如要访问b站在a站设置一个cookies,则可以这样做: 1.在b.com下建立一个文件cookies.htm 内容为: 代码如下:内容摘
- 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比JS的方法会比JQUERY麻烦很多,主要则是因为FF
- 前言Python 中的sys 模块极为基础而重要,它主要提供了一些给解释器使用(或由它维护)的变量,以及一些与解释器强交互的函数。本文将会频
- 前言本章主要讲述Windows环境下的Jenkins的自动化部署关于JenKins下载的方式有两种,1)直接下载war包,用tomcat/j
- 方案有很多种,我这里简单说一下:1. into outfileSELECT * FROM mytable  
- 装tensorflow-gpu的时候经常遇到问题,自己装过几次,经常遇到相同或者类似的问题,所以打算记录一下,也希望对其他人有所帮助基本信息
- 1、使用MySQLdb读取出来的数据是unicode字符串,如果要写入redis的hash中会变成"{u'eth0_out
- 这几天在用golang写一个工具,要执行外部命令工具,而且还要将外部命令工具输出的日志也要输出出来。网上找了一下,资料很多,关键是执行的结果
- 阅读上一篇:你是真正的用户体验设计者吗? Ⅱ系统和用户环境设计苹果系统成功在于系统架构。简化系统本身,设备只能变得更好、更小、性能更强大。在
- 多进程通信方法好多,不一而数。刚才试python封装好嘅多进程通信模块 multiprocessing.connection。简单测试咗一下