使用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

然后这个就启起来了

最后,我们看下完整的截图吧

使用docker构建golang线上部署环境的步骤详解

来源:https://www.cnblogs.com/jackluo/p/7819975.html

标签:docker,golang,线上部署
0
投稿

猜你喜欢

  • 分享5个方便好用的Python自动化脚本

    2021-04-12 08:27:32
  • 如何在页面错误时向数据库中添加记录?

    2010-06-26 12:26:00
  • Python中的异常处理相关语句基础学习笔记

    2021-10-18 00:54:50
  • Python Matplotlib 基于networkx画关系网络图

    2021-04-03 04:49:26
  • 重新编译PLSQL中的无效对象或者指定的对象 的方法

    2009-02-26 10:41:00
  • python如何写try语句

    2022-05-03 07:21:39
  • uniapp引入支付宝原生扫码插件步骤详解

    2022-06-11 20:57:45
  • Python利用随机函数生成变化图形详解

    2021-07-02 06:54:54
  • 使用python批量修改XML文件中图像的depth值

    2023-03-05 12:59:06
  • MySQL 数据备份与还原的示例代码

    2024-01-28 15:09:50
  • SQL Server应用程序的高级Sql注入

    2009-04-11 16:54:00
  • MySQL安装失败的原因及解决步骤

    2024-01-17 18:22:27
  • 使用Python的音乐播放器GUI的实现

    2022-03-02 05:02:45
  • pycharm导入第三方库的两种方法(永不报错)

    2022-08-28 14:21:57
  • 关于Django Models CharField 参数说明

    2021-05-01 04:54:12
  • Django rest framework如何自定义用户表

    2022-03-12 01:15:02
  • Python之父谈Python的未来形式

    2022-02-05 11:10:42
  • mysql 中文乱码 解决方法集锦

    2024-01-28 06:05:29
  • Golang迭代如何在Go中循环数据结构使用详解

    2024-02-08 04:23:11
  • Python批量修改文件名,文件再多也只要一秒

    2022-01-18 20:35:06
  • asp之家 网络编程 m.aspxhome.com