Ubuntu Golang 编译 + Docker部署

2023-03-22 19:44:07 484


配置Golang编译环境

  1. 下载go环境 https://studygolang.com/dl 选择go1.20.2.linux-amd64.tar.gz
  2. tar -zxvf go1.20.2.linux-amd64.tar.gz 解压到 /usr/local/go
  3. 创建 /usr/local/go-path
  4. vim /etc/profileexport GOROOT=/usr/local/go export GOPATH=/usr/local/go-path export PATH=$PATH:$GOROOT/bin
  5. source /etc/profile 重新加载配置
  6. 验证一下环境 go version

编译

  1. 进入源码目录
  2. 启用go module go generate -run "go env -w GO111MODULE=on"
  3. 配置下载代理 go generate -run "go env -w GOPROXY=https://goproxy.cn,direct"
  4. 下载依赖 go generate -run "go mod tidy"
  5. 创建二进制文件输出目录 mkdir output
  6. go build -ldflags "-s -w" -tags release -o output/test-s 和 -w 是传递给链接器的参数,它们分别表示:-s:省略符号表和调试信息。这会使生成的可执行文件更小,并且不包含调试信息,因此不容易被反汇编或者调试。这个选项在发布生产环境时很有用。 -w:省略 DWARF 符号表。这个选项可以减小生成的可执行文件的大小。使用-tags release选项来禁用调试模式。这将从二进制文件中删除所有调试相关的代码和信息,从而提高二进制文件的运行速度和安全性。
  7. ./output/test 启动一下, 看看是否正常运行

部署

  1. output目录下 vim dockerfile 编辑后保存# 谨慎选择基础镜像 越小的镜像缺失的工具越多, 可能存在的问题包括但不限于 # 1. shell环境不完整, 表现为可执行文件执行不了 # 2. ssl等基础库不存在, 无法访问https服务 # 3. 常用的时区设置方式失效 FROM centos:7 RUN adduser appuser ADD test /test RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone EXPOSE 7099 ## op RUN cd / RUN chmod 777 /test RUN mkdir /log RUN chmod -R 777 /log USER appuser CMD ["./test", "pro"]
  2. 构建镜像 docker build -t test .
  3. 创建自定义网络 docker network create --subnet=172.18.0.0/16 rootnet
  4. 运行容器 docker run --name test -p 7099:7099 --network rootnet --ip 172.18.0.3 -v /usr/soft/test/config-pro.yaml:/config-pro.yaml -v /usr/soft/test/log/:/log/ -d test--name 容器名-p 端口映射 宿主机端口:容器端口--network 指定网络--ip 指定ip-v 文件挂载 宿主机目录或文件:容器目录或文件-d 后台模式 如果没有使用-d选项,容器将在前台模式下运行,这意味着你的控制台终端将一直占用

Ubuntu 禁用 snap 自动更新

snap refresh --hold 命令保持或推迟单个 snap 应用或系统上所有 snap 应用的更新,可以是无限期的,也可以是指定时间段的例如,通过命令完全禁用 Firefox 的自动更新:snap refresh --hold firefox 或者,通过命令为 Firefox 保留 24
2023-11-16

Kubernetes Cloud Native 实践 ( 一 ) 安装

全文目录Kubernetes Cloud Native 实践 ( 一 ) 安装Kubernetes Cloud Native 实践 ( 二 ) 简单使用Kubernetes Cloud Native 实践 ( 三 ) NFS/PV/PVCKubernetes Cloud Native 实践 ( 四
2023-06-13
SkyWalking for Java

SkyWalking for Java

Skywalking的性能损耗接近3%一. Docker配置docker pull apache/skywalking-oap-server:9.4.0-java17docker pull apache/skywalking-ui:v9.4.0-java17docker pull elasticse
2023-05-19

Docker Graceful Shutdown

有几个前提操作系统层面: 提供了 kill -9 (SIGKILL)和 kill -15(SIGTERM) 两种停机策略. SIGKILL 信号是一个不能被阻塞、处理或忽略的信号,它会立即终止目标进程. SIGTERM 信号是一个可以被阻塞、处理或忽略的信号,它也可以通知目标进程终止,但是它相对于
2023-05-17

Docker启动容器出现No Such File Or Directory排查

dockerfile如下FROM alpine ADD test-backend /test-backend RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/time
2023-03-22

Ubuntu Golang 编译 + Docker部署

配置Golang编译环境下载go环境 https://studygolang.com/dl 选择go1.20.2.linux-amd64.tar.gztar -zxvf go1.20.2.linux-amd64.tar.gz 解压到 /usr/local/go创建 /usr/local/go-pat
2023-03-22

快速上手Go以及实战Gin+Gorm

阅读本文需要一定的java开发经验以及一点c/c++的基础语法特性变量命名一般是名称在前, 类型在后匿名变量使用_标记忽略常量使用 const, 例const c_name1, c_name2 = value1, value2. 关键字: iota, 索引自增进行初始化常量package main
2022-12-20

解决GoLand无法Debug

go 1.20rc1goland 2022.2.3无法进行debug控制台提示WARNING: undefined behavior - version of Delve is too old for Go version 1.20.-1 (maximum supported version 1.1
2022-12-14

Ubuntu20.04升级gcc/g++

默认版本是9.4.0第一步add-apt-repository ppa:ubuntu-toolchain-r/test 第二步apt update 第三步apt install gcc-11 apt install g++-11 查看是否安装成功ls /usr/bin/gcc* ls /usr/bi
2022-06-06

Nginx+Frp+Docker实现HTTPS内网穿透

内网穿透实用性非常强, 例如支付回调/访问内网数据库域名dns需要解析到服务器地址frp下载地址https://github.com/fatedier/frp/releases下载这两个文件frp_0.38.0_linux_amd64.tar.gzfrp_0.38.0_windows_amd64.z
2021-10-29

Docker 安装 MongoDB

docker pull mongo docker run -itd --name mongo -p 27017:27017 mongo --auth -p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mo
2021-01-13

Jenkins + Gitee 持续集成

接上文/article/537098261463302145 Jenkins安装JDK安装将jdk-8u171-linux-x64.rpm(oracle官网下载)上传至服务器执行安装命令rpm -ivh jdk-8u171-linux‐x64.rpm RPM方式安装JDK,其根目录为:/usr/ja
2020-12-04

Maven插件自动构建项目镜像

搭建docker私有仓库docker pull registry 启动容器docker run ‐di --name=registry -p 5000:5000 registry 打开浏览器 输入地址http://localhost:5000/v2/_catalog看到{"repositories"
2020-11-22

Docker 部署 详细全过程 附代码

Docker 部署本站 全过程环境:CentOS7.61. 安装Docker其他版本CentOS可以参考这个https://help.aliyun.com/document_detail/187598.html查看本机内核版本,内核版本需高于 3.10uname -r 确保 yum 包最新yum u
2020-03-28

freemarker 时间显示不正常 设置时区

项目在本地开发的时候显示正常,部署上服务器就一直差8个小时,最后发现freemarker官方文档有这样的说明time_zone:时区的名称来显示并格式化时间。 默认情况下,使用JVM的时区。 也可以是 Java 时区 API 接受的值,或者 "JVM default" (从 FreeMarker 2
2020-03-28
IDEA 2019.1 xml 不高亮

IDEA 2019.1 xml 不高亮

前几天更新了idea后,发现xml里的代码都没有了高亮,变得跟记事本一个德性了打开setting ,搜索 File Types,找到xml项, 查看下方的匹配格式,果然没有xml,(idea真是厉害)点击右方的+,输入*.xml,点击ok,解决问题
2020-03-28

npm install 淘宝镜像

npm install --registry=https://registry.npm.taobao.org
2020-03-28
Java中方法的参数传递机制

Java中方法的参数传递机制

来看一段代码 public class Man { private String name; private Integer age; public String getName() { return name; } publi
2020-03-28
基于自定义注解手写权限控制

基于自定义注解手写权限控制

方法一: AOP 方法二: 拦截器项目结构项目依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-w
2020-03-28

Docker 部署 详细全过程 附代码

Docker 部署本站 全过程环境:CentOS7.61. 安装Docker其他版本CentOS可以参考这个https://help.aliyun.com/document_detail/187598.html查看本机内核版本,内核版本需高于 3.10uname -r 确保 yum 包最新yum u
2020-03-28

SpringBoot 启动普通java工程

引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.0.9</version> </dependency>
2020-03-28

Vue.js DOM操作

<template> <input type="button" @click="reply($event)" value="回复"> </template> export default { methods: { replyFun(e) {
2020-03-29
CentOS7编译调试OpenJDK12

CentOS7编译调试OpenJDK12

1. 下载源码https://hg.openjdk.java.net/jdk/jdk12点击左侧的browse,再点击zip,就可以下载zip格式的源码压缩包。unzip xxx.zip 解压文件2. 安装jdkyum install java-11-openjdk-devel -y3. 运行con
2020-04-23
编写自己的Spring Boot Starter

编写自己的Spring Boot Starter

1.新建一个maven项目命名规则统一是xxx-spring-boot-starter完整pom.xml<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"
2020-06-29