赞
踩
本指南将向您展示如何使用 Docker 创建、测试和部署容器化的 Go 应用程序。
Docker 感谢 Oliver Frolovs 对本指南的贡献。
在本指南中,您将学习如何:
确保您的 Go 应用程序目录结构如下:
my-go-app/
├── main.go
├── go.mod
└── go.sum
在项目根目录下创建一个名为 Dockerfile
的文件,并添加以下内容:
# 第一阶段:构建
FROM golang:1.18-alpine AS builder
WORKDIR /app
COPY . .
RUN go mod tidy
RUN go build -o myapp
# 第二阶段:运行
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
EXPOSE 8080
CMD ["./myapp"]
在项目根目录下运行以下命令以构建 Docker 镜像:
docker build -t my-go-app .
使用以下命令运行容器:
docker run -d -p 8080:8080 my-go-app
现在,您可以通过浏览器访问 http://localhost:8080
来查看您的应用程序。
在项目根目录下创建一个名为 docker-compose.yml
的文件,并添加以下内容:
version: '3.8'
services:
app:
image: my-go-app
ports:
- "8080:8080"
volumes:
- .:/app
command: sh -c "go run main.go"
在项目根目录下运行以下命令启动开发环境:
docker-compose up
使用 GitHub Actions 配置 CI/CD 流水线以自动化测试和部署过程。
在项目根目录下创建 .github/workflows/ci.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.18' - name: Build with Go run: go build -v ./... - name: Build Docker image run: docker build -t my-go-app . - name: Push Docker image env: DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} run: | echo $DOCKER_PASSWORD | docker login -u $DOCKER_USERNAME --password-stdin docker tag my-go-app $DOCKER_USERNAME/my-go-app:latest docker push $DOCKER_USERNAME/my-go-app:latest
确保在 GitHub 仓库中添加 Docker Hub 凭据作为秘密(secrets)。
使用 Kubernetes 部署和管理容器化的 Go 应用程序。
在项目根目录下创建 k8s/deployment.yml
并添加以下内容:
apiVersion: apps/v1 kind: Deployment metadata: name: my-go-app spec: replicas: 3 selector: matchLabels: app: my-go-app template: metadata: labels: app: my-go-app spec: containers: - name: my-go-app image: <DOCKER_USERNAME>/my-go-app:latest ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: my-go-app-service spec: type: NodePort selector: app: my-go-app ports: - port: 8080 targetPort: 8080 nodePort: 30008
使用 kubectl
命令将应用程序部署到 Kubernetes 集群:
kubectl apply -f k8s/deployment.yml
您可以通过访问 http://<NODE_IP>:30008
查看应用程序。
通过上述步骤,您已经学会了如何容器化并运行一个 Go 应用程序,设置本地开发环境,使用容器运行测试,配置 CI/CD 流水线,并将应用程序部署到 Kubernetes。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。