0%

使用Drone构建镜像

持续集成与持续交付 - 使用Drone构建镜像_drone end docker push-CSDN博客

Excerpt

文章浏览阅读2.3k次。使用Drone构建镜像如何使用Gogs和Drone创建用于构建Docker映像的CI / CD流水线。步骤1 - 配置GogsGogs是一个自托管的Git服务,Drone是一个持续交付平台。它们可以建立CI/CD流水线,来构建Docker镜像。部署时,Drone服务的URL是必须的。运行docker-compose启动两个服务$ DRONE_HOST=https://2886795314-80-kitek05.environments.katacoda.com docker-compose up _drone end docker push


使用Drone构建镜像

如何使用Gogs和Drone创建用于构建Docker映像的CI / CD流水线。

步骤1 - 配置Gogs
Gogs是一个自托管的Git服务,Drone是一个持续交付平台。它们可以建立CI/CD流水线,来构建Docker镜像。部署时,Drone服务的URL是必须的。
运行docker-compose启动两个服务

1
$ DRONE_HOST=https://2886795314-80-kitek05.environments.katacoda.com docker-compose up -d Creating network "root_default" with the default driver Creating volume "root_db-data" with local driver Creating volume "root_gogs-data" with local driver Pulling postgres (postgres:9.5)... 9.5: Pulling from library/postgres 62deabe7a6db: Pull complete 24c7b6331486: Pull complete 00b83e6d4b38: Pull complete 0e54c5150202: Pull complete 31dd3ef3701c: Pull complete a7a29ab258fa: Pull complete 0d30412e41ab: Pull complete f300ff05c105: Pull complete 6087bca444de: Pull complete 9a074670548c: Pull complete 487595f7c39d: Pull complete 317bb2885f18: Pull complete e073a2b48253: Pull complete d43ef7481147: Pull complete Digest: sha256:8679e0d0658ec38b4ade78da75fcb9a249f16b5010081555186ef83c5c6fceda Status: Downloaded newer image for postgres:9.5 Pulling gogs (gogs/gogs:latest)... latest: Pulling from gogs/gogs e95f33c60a64: Pull complete 6629f7b66676: Pull complete 95248f7b0231: Pull complete 1a4b11e4c1b9: Pull complete 1613ead921c8: Pull complete 37949e6160d8: Pull complete 38df9b14eb06: Pull complete 93d905b51231: Pull complete Digest: sha256:7607fee4a463fdda91e7126fcc8504e7d972c4b80e79b2102c0de7175c1d3b81 Status: Downloaded newer image for gogs/gogs:latest Pulling drone-server (drone/drone:0.8)... 0.8: Pulling from drone/drone 297640bfa2ef: Pull complete 6d34061bcde3: Pull complete Digest: sha256:6056575462036f2579d17885532e5152e5478cf1c495ef183d2381a7e0cd8668 Status: Downloaded newer image for drone/drone:0.8 Pulling drone-agent (drone/agent:0.8)... 0.8: Pulling from drone/agent 297640bfa2ef: Already exists bd501232d024: Pull complete Digest: sha256:a46338f11e89afb1239331d8e4c22f3e44c867e1c81488314833e2d329d9ff40 Status: Downloaded newer image for drone/agent:0.8 Creating root_postgres_1 ... done Creating root_gogs_1 ... done Creating root_drone-server_1 ... done Creating root_drone-agent_1 ... done
1
$ cat docker-compose.yml version: '2' services: postgres: image: postgres:9.5 restart: always environment: - "POSTGRES_USER=gogsuser" - "POSTGRES_PASSWORD=gogspassword" - "POSTGRES_DB=gogs" volumes: - "db-data:/var/lib/postgresql/data" gogs: image: gogs/gogs:latest restart: always ports: - "10022:22" - "3000:3000" links: - postgres environment: - "RUN_CROND=true" volumes: - "gogs-data:/data" depends_on: - postgres drone-server: image: drone/drone:0.8 ports: - 80:8000 - 9000 volumes: - /var/lib/drone:/var/lib/drone/ restart: always links: - gogs environment: - DRONE_OPEN=true - DRONE_GOGS=true - DRONE_GOGS_URL=http://gogs:3000 - DRONE_HOST=${DRONE_HOST} - DRONE_SECRET=SOME_RANDOM_STRING drone-agent: image: drone/agent:0.8 command: agent restart: always depends_on: - drone-server volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - DRONE_SERVER=drone-server:9000 - DRONE_SECRET=SOME_RANDOM_STRING volumes: db-data: driver: local gogs-data: driver: local $

访问:https://2886795474-3000-frugo04.environments.katacoda.com
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建一个项目
在这里插入图片描述登录
在这里插入图片描述将项目打开
在这里插入图片描述
启动私有Docker Registry

1
$ docker run -p 5000:5000 -d registry:2 Unable to find image 'registry:2' locally 2: Pulling from library/registry ddad3d7c1e96: Pull complete 6eda6749503f: Pull complete 363ab70c2143: Pull complete 5b94580856e6: Pull complete 12008541203a: Pull complete Digest: sha256:bac2d7050dc4826516650267fe7dc6627e9e11ad653daca0641437abdf18df27 Status: Downloaded newer image for registry:2 d89123f5355546675ff654d285009fa2856f6dfe22252698e2de88f73017f122 $

将包含Dockerfile的项目下载下来

1
$ git clone https://github.com/katacoda/golang-http-server && cd golang-http-server Cloning into 'golang-http-server'... remote: Enumerating objects: 82, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (4/4), done. remote: Total 82 (delta 0), reused 1 (delta 0), pack-reused 78 Unpacking objects: 100% (82/82), done. Checking connectivity... done. $

修改仓库地址并推送上去

1
$ cat .drone.yml pipeline: build: image: plugins/docker repo: docker-http-server tags: - 1.0.0 - 1.0 - latest $ sed -i 's|docker-http-server|2886795292-5000-elsy02.environments.katacoda.com/test/docker-http-server|g' .drone.yml $ git remote add gogs http://test:test@2886795292-3000-elsy02.environments.katacoda.com/test/docker-http-server.git && \ > git commit -am 'Updated Repo Path' && \ > git push gogs master [master fd414fe] Updated Repo Path 1 file changed, 1 insertion(+), 1 deletion(-) Counting objects: 40, done. Delta compression using up to 2 threads. Compressing objects: 100% (38/38), done. Writing objects: 100% (40/40), 1.60 MiB | 0 bytes/s, done. Total 40 (delta 15), reused 0 (delta 0) To http://test:test@2886795292-3000-elsy02.environments.katacoda.com/test/docker-http-server.git * [new branch] master -> master $

这个push会触发Drone构建,查看流水线状态
在这里插入图片描述

1
$ curl 2886795292-5000-elsy02.environments.katacoda.com/v2/_catalog {"repositories":["test/docker-http-server"]} $ curl 2886795292-5000-elsy02.environments.katacoda.com/v2/test/docker-http-server/tags/list {"name":"test/docker-http-server","tags":["latest","1.0.0","1"]} $

clone与build完毕,自动将构建好的镜像上传到Private Docker Registry里
在这里插入图片描述

运行容器

1
$ docker run -d -p 8080:80 2886795292-5000-elsy02.environments.katacoda.com/test/docker-http-server Unable to find image '2886795292-5000-elsy02.environments.katacoda.com/test/docker-http-server:latest' locally latest: Pulling from test/docker-http-server d1426d011624: Pull complete dff425fdcaca: Pull complete ac2d6c278079: Pull complete 1260ddb729fc: Pull complete 229cfa4694f2: Pull complete c2bc20ef576d: Pull complete 9f99ecd91c16: Pull complete 1197308fa1ab: Pull complete 465ddf26975a: Pull complete 8fb177b04b86: Pull complete Digest: sha256:8027befe619d5501e2fb23126beb502591b73304cb494000d022e3b7b397b6b1 Status: Downloaded newer image for 2886795292-5000-elsy02.environments.katacoda.com/test/docker-http-server:latest 017b9c2e647160d147f3d4f7fa9c5ac1c937d1aa7cf8d0050412281f39cbea5c $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 017b9c2e6471 2886795292-5000-elsy02.environments.katacoda.com/test/docker-http-server "/app/main" 16 seconds ago Up 14 seconds 0.0.0.0:8080->80/tcp sharp_elbakyan 7cf2383aea37 registry:2 "/entrypoint.sh /etc…" 5 minutes ago Up 4 minutes 0.0.0.0:5000->5000/tcp quirky_turing c7e0fb7d00d1 drone/agent:0.8 "/bin/drone-agent ag…" 9 minutes ago Up 9 minutes (healthy) 3000/tcp root_drone-agent_1 2d9d411a425b drone/drone:0.8 "/bin/drone-server" 9 minutes ago Up 9 minutes 80/tcp, 443/tcp, 0.0.0.0:80->8000/tcp, 0.0.0.0:32768->9000/tcp root_drone-server_1 3d61b6fbb34e gogs/gogs:latest "/app/gogs/docker/st…" 9 minutes ago Up 9 minutes 0.0.0.0:3000->3000/tcp, 0.0.0.0:10022->22/tcp root_gogs_1 1a5723f2a863 postgres:9.5 "docker-entrypoint.s…" 9 minutes ago Up 9 minutes 5432/tcp root_postgres_1 $ curl localhost:8080 <h1>This request was processed by host: 017b9c2e6471</h1> $