使用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
猜你喜欢
- 数据库管理系统中并发控制的任务是确保在多个事务同时存取数据库中同一数据不破坏事务的隔离性和统一性以及数据库的统一性乐观锁和悲观锁式并发控制主
- 爬取网址:http://www.ultramanclub.com/allultraman/使用工具:pycharm,requests进入网页
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- try { int readByte = 0;  
- 这篇文章主要介绍了Python tkinter三种布局实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 本文实例介绍了如何使用ASP代码来读写注册表,呵呵厉害吧! 一个例子: <%Dim ReadComputerNam
- 使用 Django自带的 auth 用户验证功能,编写函数,使用 is_authenticated 检查用户是否登录,结果报错:TypeEr
- 拖拽功能主要是用在让用户做一些自定义的动作,比如拖动排序,弹出框拖动移动等等拖拽的流程动作1、鼠标按下 会触发onmousedown事件2、
- 1、配置安装源# 安装dnf install http://mirrors.ustc.edu.cn/mysql-repo/mysql80-c
- 本节内容:1.前言2.相关概念3.Python中的默认编码4.Python2与Python3中对字符串的支持5.字符编码转换一、前言Pyth
- 1.引入正则模块(Regular Expression)要使用python3中的RE则必须引入 re模块import re #引入正则表达式
- 这篇文章主要介绍了python连接字符串过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以
- 本文实例讲述了jQuery实现弹出带遮罩层的居中浮动窗口效果。分享给大家供大家参考,具体如下:<!doctype html>&l
- 1.self只有在类的方法中才会有,其他函数或方法是不必带self的。2.在调用时不必传入相应的参数。3.在类的方法中(如__init__)
- 通过界面设计上是能手工操作的,无法达到我批量修改几千台服务器。 因为此了一个脚本来批量执行。 环境:redgate + mssql 2008
- 1.urlopen()方法urllib.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象
- 本文实例讲述了Python实现简单的代理服务器。分享给大家供大家参考。具体如下:具备简单的管理功能,运行后 telnet localhost
- 关于python3中的追加写入excel问题,这个问题坑了我几小时,其实加一个参数即可。因为之前有写好的excel,想追加写入,但是写入后却
- 在操作系统的文件中,还存在着一种我们可以自己定义的文件属性。这些属性不是保存在文件内容中,也不是直接可以通过 ls -al 所能看到的内容。
- 前言scikit-learn是Python中最流行的机器学习库之一,它提供了各种各样的机器学习算法和工具,包括分类、回归、聚类、降维等。sc