연결 환경 빠 른 배치 - docker - compose 기반 CI / CD 실천
8142 단어 nginxdocker-composedocker
배경
캐릭터 분업 이 명확 한 팀 에서 어떤 조건 이 가장 우아 한 조화 테스트 환경 이 라 고 할 수 있 습 니까?큰 공장 에는 틀림없이 많은 고급 해결 방안 이 있 을 것 이다. 예 를 들 어 이런 것들:
이러한 수요 만 있 더 라 도 기 존의 '개발 기' 의 연결 환경 에서 개발 이나 테스트 인원 을 추가 하거나 nginx 의 설정 을 업데이트 해 야 하거나 PHP, Nodejs 버 전 을 업데이트 해 야 하 는 것 은 테스트 환경 유지 에 있어 서 매우 고 통 스 러 운 일이 다.
2. 빠 른 시작
주의: 현재 배치 방안 은 의존:
Docker
, Docker-compose
, git
1. 다운로드 코드$ git clone https://github.com/xiongwilee/docker-compose-boilerplate.git
2, 테스트 캐릭터 추가
demo
$ cd docker-compose
$ sh build.sh -u demo -m admin:master
이 때
app/
에 서 는 demo
디 렉 터 리 를 만 들 고 nginx/conf.d
에 서 는 demo.conf
파일 을 만 듭 니 다.3. 서비스 시작
$ docker-compose up -d
이때 다시 실행
docker-compose ps
하면 세 개의 미 러 를 만 든 것 을 발견 할 수 있 습 니 다.그리고 hosts 를 설정 하여 현재 기 계 를 가리 키 고 접근 합 니 다.http://sample.demo.testdomain... sample.demo.testdomain.com
정 보 를 되 돌려 주 고 생 성 성공 을 설명 합 니 다.3. 배치 구조 설명
TIPS: 이 방안 은 작은 회사 or 민첩 프로젝트 팀 의 테스트 환경 배치 에 만 적용 되 며, Docker 학습 입문 케이스 로 도 사용 할 수 있 으 며, 일정한 규모 의 생산 환경 에 적용 되 지 않 습 니 다.
'개발 기' 에 docker, docker - compose, git 만 설치 한 후에 Nginx, PHP 의 응용 은 당연히 docker 용기 화 사상 덕분이다.사실 이것 의 실현 도 용기 화 된 이 특성 만 을 이용 하여 최종 적 으로 docker - compose 포장 의 전체 서비스 회장 이 메모리 에 저장 되 고 많은 관리 비용 이 필요 하지 않 습 니 다.
최종 실현 은 두 가지 특징 을 가진다.
phpinfo()
은 모든 응용 창고 주소, 환경 변수 설정, 코드 업데이트 후의 갈고리 등 조작 을 관리한다.그 실현 원 리 는 스 크 립 트 파일 을 통 해 docker - compose 를 숙주 호스트 에 투사 하 는 설정, 소스 코드 를 관리 하 는 동시에 docker - compose 를 노출 시 켜 서비스 관 리 를 실현 하 는 것 이다.구조 도 는 다음 과 같다.
1. docker - compose 설정 파일:
sample
docker - compose 설정 파일 docker-compose.yml
을 먼저 보 세 요.version: '3'
services:
# PHP app
php:
build: ./php
expose:
- "9000"
# nginx
nginx:
build: ./nginx
#
ports:
- "80:80"
# , php
depends_on:
- "php"
# jenkins
jenkins:
image: jenkins:latest
ports:
- "8080:8080"
- "50000:50000"
이것 은 바로 일반적인 PHP 개발 환경 예제 이다.
docker-compose.yml
, php
, nginx
세 개의 기본 용 기 를 볼 수 있 고 jenkins
를 제외 한 다른 용 기 는 모두 Dockerfile (build 설정) 을 사용 하여 구축 할 수 있다.2. 구축 스 크 립 트:
jenkins
docker 에서 nginx 설정 파일 과 phop 소스 파일 의 맵 을 숙 호스트 에 실 현 했 기 때문에 숙 호스트 의 파일 을 관리 하면 코드 의 발표 와 배 치 를 관리 할 수 있 습 니 다. build.sh
이 바로 이 일 을 하 는 데 사 용 됩 니 다.물론 배치 코드 가 완 료 된 후에 재 부팅, 컴 파일 등 작업 을 해 야 한다 면 Sample 디 렉 터 리 의 갈 고 리 를 통 해 이 루어 질 수 있 습 니 다.
구체 적 인 실현 은
build.sh
소스 코드 를 참고 할 수 있다.4. 상세 설정
1. 테스트 환경 도 메 인 이름 설정 개발
build.sh
테스트 환경 도 메 인 이름 을 수정 하고 예제 에서 사용 하 는 nginx/conf.d/sample
을 자신의 테스트 환경 도 메 인 이름 으로 바 꾸 면 된다.또한 이 서 비 스 를 배치 하 는 기계 에 테스트 도 메 인 이름 범 위 를 분석 하 는 것 을 권장 합 니 다.
2.
testdomain.com
설정 설명docker - compose 의 설정 파일 은 기본적으로 수정 할 필요 가 없습니다. 관심 만 가 져 야 합 니 다. nginx 는 80 포트 에 매 핑 되 고, jenkins 는 8080 포트 이 며, phop - fpm 의 9000 포트 는 대외 적 으로 개방 되 지 않 으 면 됩 니 다.
물론 phop 환경 이 설치 의존 이 필요 하 다 면 수정
docker-compose.yml
이 필요 하 다.또 다른 언어 환경 을 추가 하려 면 용기 성명 을 추가 해 야 한다.3. 모듈 설정
1) 배치 스 크 립 트
./php/Dockerfile
비 즈 니스 모듈 의 설정 은 기본적으로 배치 스 크 립 트 build.sh
를 통 해 작 동 합 니 다.실행 build.sh
알림 은 다음 과 같 습 니 다.Example:
./build.sh -u xiongwilee -m php:online,service:online
Usage:
-u , :default
-m , :php:online,service:online
-e , :php:true,service:false
-d , :default
2) PHP 모듈
추가 캐릭터 는 실시 간 으로
./build.sh
디 렉 터 리 에 따라 캐릭터 이름 에 해당 하 는 폴 더 를 만 들 었 습 니 다.sample 에 네 개의 파일 만 있 습 니 다:창고 배치
php/sample
: 현재 모듈 의 원 격 창고 주 소 를 설명 합 니 다 .gitaddress
: 캐릭터 를 만 들 때 PHP 모듈 코드 가 완 료 된 후 리 셋 갈 고 리 를 다운로드 하고 환경 변수 등 파일 을 업데이트 하면 실행 on_add.sh
이 호출 됩 니 다 ./build.sh -u {name}
: 어떤 모듈 이 업 데 이 트 된 후의 리 셋 갈 고 리 를 컴 파일, 리 셋 서비스 등 으로 실행 on_upd.sh
하면 호출 됩 니 다 ./build.sh -u {name} -m web:master
: 환경 변 수 를 업데이트 하 는 갈고리, 실행 on_env.sh
이 모두 호출 됩 니 다.c. 예제 디 렉 터 리
./build.sh -u {name} -m web:master -e web:true
:sample 디 렉 터 리 에 sample 디 렉 터 리 가 있 습 니 다. 이것 은 phop 모듈 예제 입 니 다.캐릭터 를 추가 한 후 sample. {name}. testdomain. com 을 방문 하면 추가 여 부 를 테스트 할 수 있 습 니 다.
3) Nginx 설정
목록
php / sample 디 렉 터 리 와 마찬가지 로
app/sample/sample
아래 에 도 sample 파일 이 있 습 니 다. 이것 도 캐릭터 를 추가 할 때 사용 하 는 예제 설정 파일 입 니 다.추가 캐릭터 는 sample 의 ${name} 을 현재 캐릭터 이름 으로 바 꿉 니 다.b.
nginx/conf.d
디 렉 터 리nginx/conf.d
디 렉 터 리 와 nginx 모든 로그 파일 의 홈 호스트 맵 디 렉 터 리.4) Jenkins 구성 방안
jenkins 는 기본적으로 8080 포트 를 엽 니 다. 직접 통과 할 수 있 습 니 다.http://jenkins.testdomain.com:8080jenkins 서비스 방문.구체 적 인 초기 화 과정 은 여기 서 상세 하 게 설명 하지 않 습 니 다.
a. 플러그 인 을 설치 하여 현재 사용자 이름 가 져 오기
Jenkins 를 통 해 build. sh 스 크 립 트 를 실행 할 때 위 에서 언급 한 캐릭터 이름 은 어떻게 얻 습 니까?사실은 제 인 킨 스 의 사용자 이름 입 니 다. 여러 개의 제 인 킨 스 를 만 드 는 사용 자 를 통 해 테스트 환경 역할 을 만 들 수 있 습 니 다.
jenkins 플러그 인 - Build User Vars Plugin 의 간단 한 설명 을 참고 하여 jenkins 플러그 인 을 설치 합 니 다.
설치 가 완료 되면
nginx/log
환경 변 수 를 통 해 현재 jenkins 의 사용자 이름 을 얻 을 수 있 습 니 다. (물론 새 jenkins 사용자 의 사용자 이름 은 병 음 이나 영어 가 좋 습 니 다.)b. Docker 미 러 의 Jenkins 가 홈 호스트 와 통신 합 니 다.
제 인 킨 스 는 Docker 미 러 에 존재 하기 때문에 제 인 킨 스 작업 을 수행 할 때마다
nginx/log
미 러 의 제 인 킨 스 를 홈 호스트 와 통신 해 야 합 니 다.여기 서 사용 하 는 방법 은 젠 킨 스 의 미 러 에 호스트 의 신뢰 관 계 를 추가 하 는 것 입 니 다.그리고
BUILD_USER
를 통 해 호스트 의 스 크 립 트 를 직접 실행 할 수 있 습 니 다.c. job 추가
하나의 작업 을 추가 한 후 두 가지 만 설정 하면 됩 니 다:
echo " web-fe:${web_fe},web:${web},service:${service} ${BUILD_USER_ID} "
ssh apple@{jenkins IP} "sh ~/docker-compose/build.sh -u ${BUILD_USER_ID} -m web-fe:${web_fe},web:${web},service:${service} -e web:${web_env},service:${service_env}";
이렇게 하면 이 작업 을 통 해 jenkins 에서 호스트 의
build.sh
스 크 립 트 를 직접 실행 하여 캐릭터 를 추가 하고 코드 를 업데이트 하 는 작업 을 실현 할 수 있 습 니 다.마지막 으로 만약 에 PHP 의 서 비 스 를 바탕 으로 다른 언어의 서 비 스 를 통합 해 야 한다 면 예 를 들 어 Nodejs 와 관련 된 변경 사항 은 다음 과 같다.
ssh apple@{jenkins IP} "sh build.sh"
build.sh
docker-compose.yml
다른 전문 적 인 아 이 디 어 를 제공 하 는 것 을 환영 합 니 다. issue, fork 를 제시 하 는 것 을 환영 합 니 다.메 일 로 연락 하 셔 도 됩 니 다: xiongwilee [at] foxmail. com.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.