github actions 搭建私有镜像站
时间: 2025-03-02 21:32:36 浏览: 44
### 使用 GitHub Actions 构建和部署私有 Docker 镜像仓库
#### 创建 GitHub 存储库
为了实现这一目标,首先需要创建一个新的 GitHub 存储库用于保存构建所需的资源。此存储库不仅会包含源代码,还会有一个特别重要的 `Dockerfile` 文件定义了容器化应用所需环境配置[^3]。
```bash
git init my-docker-repo
cd my-docker-repo
echo "# My Private Docker Registry" >> README.md
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/yourusername/my-docker-repo.git
git push -u origin main
```
#### 编写 Dockerfile
在新建立的 GitHub 项目根目录下放置一个名为 `Dockerfile` 的文件,该文件描述了如何打包应用程序及其依赖项到 Docker 容器内运行。对于特定的应用场景可以调整基础镜像和其他安装指令以适应实际需求。
```dockerfile
FROM node:alpine
WORKDIR /app
COPY . .
RUN npm install
CMD ["npm", "start"]
```
#### 设置 GitHub Secrets
为了让 GitHub Actions 能够安全地访问外部服务(如 AWS ECR 或者 Azure Container Registry),必须通过设置 secrets 来提供必要的认证凭证。这一步骤确保敏感数据不会暴露在外。
进入项目的 **Settings -> Secrets and variables -> Actions** 页面添加如下 secret:
- `REGISTRY_USERNAME`: 登录名
- `REGISTRY_PASSWORD`: 密码或令牌
- `REGISTRY_URL`: 私有仓库地址
#### 配置 GitHub Action 工作流
最后,在 `.github/workflows/ci.yml` 中编写 CI 流程脚本,指定触发条件以及具体执行的任务列表。下面是一个简单的例子展示了怎样利用官方提供的 docker/build-push-action 动作来自动化整个过程[^1]。
```yaml
name: Build & Push Docker Image
on:
push:
branches:
- main
jobs:
build-and-push-image:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Log in to the registry
run: echo "${{ secrets.REGISTRY_PASSWORD }}" | docker login ${{ secrets.REGISTRY_URL }} --username ${{ secrets.REGISTRY_USERNAME }} --password-stdin
- name: Build image
run: |
docker build . -t my-private-app:${GITHUB_SHA}
- name: Tag latest
run: |
docker tag my-private-app:${GITHUB_SHA} ${secrets.REGISTRY_URL}/my-private-app:latest
- name: Push image
run: |
docker push ${secrets.REGISTRY_URL}/my-private-app:latest
```
上述流程会在每次向默认分支推送更新时自动触发一次完整的CI/CD管道操作——从检出最新版本、登录注册表直到最终上传完成后的镜像至指定位置。
阅读全文
相关推荐


















