簡體   English   中英

在Gitlab Runner容器中構建Docker鏡像

[英]Building Docker Image within Gitlab Runner Container

我正在嘗試設置一個運行Ubuntu Linux 18.04作為docker主機的構建服務器。

主機有三個docker容器運行 - Docker Registry - Gitlab Server - Gitlab Runner(用於構建Angular Apps)

我希望Gitlab Runner容器用nginx構建docker鏡像並編譯Angular代碼並將其推送到Docker Registry。

我已經設法運行所有三個容器運行,Gitlab運行器正在構建角度項目,但我面臨的挑戰是在Gitlab Runner容器中構建docker鏡像。

在Gitlab Runner容器中無法使用Docker命令來構建docker鏡像。

這可能嗎 ??

在此輸入圖像描述

我曾嘗試在Gitlab Runner容器中安裝docker.io,所以在構建之后,它可以使用docker命令,但仍然沒有運氣。 它仍然說碼頭不可用。

這是我的.gitlab-ci.yml文件

stages:
 - build

build:
  stage: build
  image: node:10.9.0
  script:
    - npm install -g @angular/cli
    - npm install -g typescript
    - npm install
    - ng build --prod
    - docker image build -t tag/to/image .
    - docker push tag/to/image
  tags:
    - angular
  cache:
    paths:
      - node_modules/
  artifacts:
    expire_in: 1 week
    paths:
      - dist/*
  only:
    - master

這是我的nginx.conf文件

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    server {
        listen 80;
        server_name  localhost;

        root   /usr/share/nginx/html;
        index  index.html index.htm;
        include /etc/nginx/mime.types;

        gzip on;
        gzip_min_length 1000;
        gzip_proxied expired no-cache no-store private auth;
        gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

        location / {
            try_files $uri $uri/ /index.html;
        }
    }
}

這是我想用來構建的Dockerfile

FROM nginx:alpine

COPY nginx.conf /etc/nginx/nginx.conf

WORKDIR /usr/share/nginx/html
COPY dist/ .

在gitlab文檔中,有一個關於如何在Gitlab-CI管道中構建docker文件的參考。 這里描述最干凈,最好的方式,效果非常好。

在我們的例子中,我們需要在管道中進行一些額外的編譯,因此我們使用了python:3.6.5 docker image並在其中安裝了docker。

重要提示:確保您的gitlab-runner docker executor將'privileged'設置為true

executor = "docker"
[runners.docker]
  privileged = true

首先,我們在gitlab-ci.yml的頂部定義了“install_docker”

.install_docker: &install_docker |
      apt-get update
      apt-get -y install apt-transport-https ca-certificates curl software-properties-common
      curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
      add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
      apt-get update
      apt-get -y install docker-ce

然后我們在工作中需要時使用它

script:
  - *install_docker

在我的項目中,我通常在Dockerfile中執行構建步驟,並在我的.gitlab-ci.yml上使用docker :image ,因此安裝的Docker是我在運行器上需要的唯一依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM