在CentOS上实现Golang自动化部署可以通过以下步骤完成:
首先,在CentOS系统上安装Golang。可以通过以下命令安装:
sudo yum install golang 或者从Go官方网站下载适合CentOS版本的安装包进行安装:
wget https://golang.google.cn/dl/go1.16.5.linux-amd64.tar.gztar -C /usr/local -zxvf go1.16.5.linux-amd64.tar.gz 安装完成后,配置环境变量:
echo 'export PATH=/usr/local/go/bin:$PATH' >> ~/.bashrc source ~/.bashrc go version 在项目目录下使用 go build 命令编译你的Go应用程序,生成一个可执行文件。例如,如果你的项目入口文件是 main.go,则命令如下:
go build -o myapp main.go 为了确保你的Go应用程序在服务器重启后自动启动,可以使用systemd来管理你的服务。首先,创建一个systemd服务文件,例如 /etc/systemd/system/myapp.service:
[Unit] Description=My Go Application After=network.target [Service] User=your_user WorkingDirectory=/path/to/your/app ExecStart=/path/to/your/app/myapp Restart=always Environment=APP_ENV=production [Install] WantedBy=multi-user.target 然后,重新加载systemd配置并启动服务:
sudo systemctl daemon-reload sudo systemctl start myapp.service sudo systemctl enable myapp.service 编写一个 Dockerfile:
# 使用官方的Golang镜像作为基础镜像 FROM golang:1.18 # 设置工作目录 WORKDIR /app # 复制go.mod和go.sum文件 COPY go.mod go.sum ./ # 下载所有依赖 RUN go mod download # 复制项目文件到工作目录 COPY . . # 构建二进制文件 RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -installsuffix cgo -o myapp . # 暴露端口 EXPOSE 8080 # 运行应用程序 CMD ["./myapp"] 在项目目录下,运行以下命令来构建Docker镜像:
docker build -t my-golang-app . 运行Docker容器:
docker run -d --name my-running-app my-golang-app 使用GitHub Actions配置CI/CD流程:
在项目根目录下创建一个 .github/workflows 目录,并在其中创建一个 ci-cd.yml 文件:
name: CI/CD Pipeline on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Go uses: actions/setup-go@v2 with: go-version: '^1.17' - name: Install dependencies run: go mod download - name: Build run: go build -v ./... - name: Run tests run: go test -v ./... - name: Build Docker image run: | docker build -t my-go-app:latest . docker push my-go-app:latest - name: Deploy to Kubernetes run: | kubectl apply -f deployment.yaml 确保在GitHub仓库中有一个 deployment.yaml 文件,用于定义Kubernetes部署配置。