Docker outside of Doodo를 통한 GiitLab-cI
2010/04/24 소스 코드가 설정된 URL이 잘못되어 수정됨
2010/05/01 소감 및 명령 수정
이 직위는
멈출 이유가 없으니까.시작 GiitLab으로 com을 사용할 수 없는 나날을 보내다의 후속 보도.
골대
공식-공통 Docker socket binding
(Start) http://192.168.100.201:80/kubolab/tms의 master 제출을 계기로 CI 실행
(End) http://192.168.100.201:10080에서 응용 프로그램의 초기 화면을 볼 수 있습니다.
※ 어쨌든 습관이 된 CakePHP3을 사용했습니다.
감상
일단 소감.더듬으면서 하는 거지만 도대체 이 방법이 자신 없는 건지...
시험 따위가 움직일 수 있다면 다음은
컨테이너의 볼륨을 중지하고
Docker Hub
상태의 컨테이너에 소스 코드를 배치합니다(Amazon ECS 또는 Azure로...).디자인하고 싶어요.구성도
소스 코드: https://gitlab.com/kubolab/tms/-/tree/gitlab-ci-dood
팀명, 프로젝트명을 블로그 투고용으로 변경하려고 했는데 일이 많이 걸려 이래서 미안하게 됐다.
GiitLab 그룹 이름
GiitLab 프로젝트 이름
kubolab
tms
tree
👀:
本来は gitignore に含めるべき
.
├── .build
│ ├── build.cmd
│ ├── docker-compose.yml
│ ├── .env
│ └── .project-items 👀
│ ├── app.php # DB接続情報等
│ └── createdb.sql
│
├── app.src
│ ├── config
│ │ └── app.php 👀
│ └── webroot
├── docker
│ ├── build
│ │ ├── cake_app
│ │ │ └── Dockerfile
│ │ └── cake_nginx
│ │ └── Dockerfile
│ ├── config
│ │ └── nginx
│ │ └── default.conf
│ ├── postgres-dump
│ └── sh
│ └── postgres
│ └── docker-entrypoint-initdb.d
│ └── init.sh # docker-compose up 時に実行される
│
└── shared_サーバ配置用 # CI実行前に GitLab サーバに配置しておく。
항목컨텐트
사전 설치된 GitLab의 IP
192.168.100.201
Host OS
Windows 10 Pro 1909
VirtualBox의 게스트 OS
이전 문장을 인용하다
Greest OS에서 이동하는 GitLab ver
이전 문장을 인용하다
GitLab Runner
12.9.0
Docker 컨테이너 이름(모두)
image
시험을 준비하다
cake_nginx
nginx:1.13.5-alpine
ports: 10080:80 1
cake_php
php:7-fpm
cake_postgres
postgres:10.3-alpine
ports: 5432:5432
준비(GitLab에서 실행되는 서버)
CI를 실행할 때 사용할 파일을 수동으로 구성합니다(버전 관리에 포함되지 않는 파일).
※ SCP 또는 무언가를 통해
/shared_サーバ配置用
GitLab 서버에 배치/shared
└── kubolab
└── tms
└── .project-items
└── app.php #DB接続情報等
└── createdb.sql #DB初期データ
GTLab-Runner(gitlab-Runner) 컨테이너 시작
ⅰ. Hub OS에 Docker 설치
https://qiita.com/ymasaoka/items/b6c3ffea060bcd237478 -- Install Docker on CentOS 7
ⅱ. GTLab-Runner 컨테이너 시작
$ docker run -d --name gitlab-runner-dd --restart always \
-v /srv/gitlab-runner-dd/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
# GitLab-Runner コンテナに入って実行
$ docker exec -it gitlab-runner-dd bash
# docker をインストール
$ curl -sSL https://get.docker.com/ | sh
# docker グループに追加
$ usermod -aG docker gitlab-runner
작업을 실행하는 Runner에 로그인합니다.
ⅰ. 등록!
★ 필기를 한 Token
참조: https://qiita.com/hykisk/items/ebff2f7cd2e8100a6bbe - 작업을 수행하는 Runner를 등록합니다.
$ gitlab-runner register -n \
--url http://172.17.0.1/ \
--registration-token ★メモしたToken \
--executor docker \
--docker-image "docker:stable" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock \
--docker-volumes /shared-builds/kubolab/tms:/builds/kubolab/tms \
--docker-volumes /shared/kubolab/tms/.project-items:/gitlab-runner-dd/.project-items \
--tag-list app-build \
--clone-url = "http://192.168.100.201"
memo: 호스트 이름을 GitLab에 할당하는 동안 클론이 실패했습니다.옵션--clone-url
을 취소하고 이름 해결을 추가로 지정합니다.--docker-extra-hosts "gitlab.private.hykisk.com:172.17.0.1"
gitlab-ci.yml
stages:
- doodbuild
variables:
GIT_STRATEGY: fetch
doodbuild:
stage: doodbuild
variables:
SHARED_BUILDS_DOCKER_DIR: /shared-builds/$CI_PROJECT_PATH
SHARED_DATA_DIR: /shared/$CI_PROJECT_PATH
image: docker:stable
script:
- cp -pf /gitlab-runner-dd/.project-items/app.php $CI_PROJECT_DIR/app.src/config
# このコンテナ (gitlab-runner) に docker-compose をインストール
- apk update && apk add docker-compose
- docker-compose -f ./.build/docker-compose.yml down
# Dockerfile に手を加えたら build しなおす
#- docker-compose -f ./.build/docker-compose.yml down --rmi all --volumes
#- docker-compose -f ./.build/docker-compose.yml build --no-cache
- docker-compose -f ./.build/docker-compose.yml up -d
# アプリに必要なパッケージをインストール
- docker exec cake_app sh -c "cd /var/www/app && composer install"
#only:
#- master
tags:
- app-build
docker-compose.yml
/.build/docker-compose.yml
version: '3'
services:
web:
container_name: cake_nginx
build:
context: ..
dockerfile: docker/build/cake_nginx/Dockerfile
volumes:
- $SHARED_BUILDS_DOCKER_DIR/app.src:/var/www/app
- $SHARED_BUILDS_DOCKER_DIR/docker/config/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- $SHARED_DATA_DIR/nginx_log:/var/log/nginx
depends_on:
- app
ports:
- 10080:80
networks:
vpcbr:
ipv4_address: 172.26.0.2
app:
container_name: cake_app
build:
context: ..
dockerfile: docker/build/cake_app/Dockerfile
volumes:
- $SHARED_BUILDS_DOCKER_DIR/app.src:/var/www/app
networks:
vpcbr:
ipv4_address: 172.26.0.3
db:
container_name: cake_postgres
image: postgres:10.3-alpine
ports:
- 5432:5432
volumes:
- $SHARED_BUILDS_DOCKER_DIR/docker/data/postgres:/var/lib/postgresql
# DB作成スクリプトを配置
- $SHARED_BUILDS_DOCKER_DIR/docker/sh/postgres/docker-entrypoint-initdb.d/init.sh:/docker-entrypoint-initdb.d/init.sh
- $SHARED_DATA_DIR/.project-items/createdb.sql:/tmp/createdb.sql:ro
environment:
POSTGRES_USER: $TMS_POSTGRES_USER
POSTGRES_PASSWORD: $TMS_POSTGRES_PASSWORD
POSTGRES_DUMP_FILE_DIR: /tmp
networks:
vpcbr:
ipv4_address: 172.26.0.4
networks:
vpcbr:
ipam:
driver: default
config:
- subnet: 172.26.0.0/24
memo: 공개할 수 없는 정보는 브라우저(GitLab의 GUI)에서 설정한 환경 변수를 사용합니다. environment:
POSTGRES_USER: $TMS_POSTGRES_USER
POSTGRES_PASSWORD: $TMS_POSTGRES_PASS
http://192.168.100.201/kubolab/tms/-/settings/ci_cd기타 파일(Docker file 등)
소스 코드:참조https://gitlab.com/kubolab/tms/-/tree/gitlab-ci-dood
확인
PUSH를 통해 CI 작업
created -> running -> passed
이 되면 OK재구성도(상세판)
덤
더블 클릭
/build/build.cmd
으로 로컬 PC(Docker for Windows 설치 완료)의 개발 환경을 구축합니다.소스 할애환경 구축의 어려움
Permission denied
로 실행할 수 없습니다. $ git update-index --add --chmod=+x {filepath}
# GitLab サーバで (設定ファイルが残るので削除しておく)
docker exec -it gitlab-runner-dd bash
rm -f /etc/gitlab-runner/config.toml
exit
docker ps -aq | xargs docker rm -f
docker images -aq | xargs docker rmi
docker volume rm $(docker volume ls -qf dangling=true)
docker network rm XXX_vpcbr
로컬 PC의 경우(cmd)for /f "usebackq" %x in (`docker ps -aq`) do docker rm -f %x
for /f "usebackq" %x in (`docker images -q`) do docker rmi %x
for /f "usebackq" %x in (`docker volume ls -q`) do docker volume rm %x
docker network rm XXX_vpcbr
로컬 PC의 경우(powerrshell)cd .build
docker-compose down --rmi all --volumes
docker rm -f $(docker ps -aq)
docker rmi -f $(docker images -aq)
docker network rm XXX_vpcbr
호스트 격인 지트랩은 80호를 사용하기 때문에 10080호를 사용한다.액세스 프로세스:
1. 브라우저
10080
로 GitLab 서버 액세스2. VirtualBox포트 전달 규칙를 통해
10080 -> 10080
에 매핑3.nginx의 설정
10080 -> 80
을 통해 비추기↩
Reference
이 문제에 관하여(Docker outside of Doodo를 통한 GiitLab-cI), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hykisk/items/30d83cea4e148c79cb87텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)