[英]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.