吴晓阳
发布于 2025-03-18 / 22 阅读
0

drone的docker:dind镜像,将用到的密码存drone

可以将用到的密码存储在Drone中,这样做能提高安全性,避免密码硬编码在配置文件里。以下是具体步骤:

1. 准备工作

要保证你已经正确安装并配置好了Drone,同时拥有对应的权限去管理机密信息。

2. 存储密码到Drone机密信息

你可以通过Drone的命令行工具或者Web界面把密码存到Drone的机密信息中。

使用命令行工具

首先要安装Drone CLI,接着使用下面的命令来存储密码:

drone secret add --repository <your-repo> --name <secret-name> --value <your-password>
  • <your-repo>:是你的仓库名称,格式为 owner/repo
  • <secret-name>:为你要存储的机密信息的名称,之后在Drone配置文件里会用到。
  • <your-password>:就是你实际的密码。

使用Web界面

  • 登录到Drone的Web界面。
  • 进入对应的仓库设置页面。
  • 点击“Secrets”选项卡。
  • 点击“Add Secret”按钮,输入机密信息的名称和值,然后点击“Save”。

3. 在Drone配置文件里使用机密信息

在Drone的 .drone.yml 配置文件里使用存储的机密信息。以下是一个使用 docker:dind 镜像的示例:

kind: pipeline
type: docker
name: default

steps:
  - name: build-and-push
    image: docker:dind
    volumes:
      - name: dockersock
        path: /var/run/docker.sock
    environment:
      DOCKER_PASSWORD:
        from_secret: <secret-name>
    commands:
      - docker login -u your_username -p $DOCKER_PASSWORD registry.example.com
      - docker build -t registry.example.com/your-image:latest .
      - docker push registry.example.com/your-image:latest

volumes:
  - name: dockersock
    host:
      path: /var/run/docker.sock

在这个示例中:

  • from_secret: <secret-name> 把存储在Drone中的机密信息注入到 DOCKER_PASSWORD 环境变量里。
  • commands 部分,运用 $DOCKER_PASSWORD 来进行 docker login 操作。

通过以上步骤,你就能安全地把密码存储在Drone里,并且在使用 docker:dind 镜像时使用这些密码了。

drone - name: deploy
  image: appleboy/drone-ssh
  pull: true
  settings:
    host: 10.129.232.105
    port: 22
    username: root
    password:
      from_secret: ssh_password  ##这里是密码存储
    command_timeout: 2m
    script: 
      - source /etc/profile
      #- docker run -e VIRTUAL_HOST=class.wxy.work -e VIRTUAL_PORT=80 -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime -d  osharp:v7
      - cd /data/
      - docker-compose up -d
      - echo 项目部署成功