1. 도커 컴포즈 설치
: 도커 컴포즈 깃허브 (https://github.com/docker/compose)에서 설치
=> README 참조 (최신 버전 확인)
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
: 도커 컴포즈 다운로드
chmod +x /usr/local/bin/docker-compose
: 실행 권한 부여
docker-compose --version
: 도커 컴포즈 버전 확인 (정상 설치 여부 확인)
2. 도커 컴포즈 파일 작성 및 테스트
version: '3.8'
services:
main:
image: 2mukee/mh_main_image:1.35
container_name: mh_main_container
ports:
- 443:17260
depends_on:
- db
restart: always
db:
image: 2mukee/mh_db_image:1.1
container_name: mh_db_container
ports:
- 27107:27107
restart: always
docker-compose up -d
docker-compose ps
docker-compose down
3. 도커 네트워크 생성 및 컴포트 파일 수정
docker network create --gateway 172.22.0.1 --subnet 172.22.0.0/16 mh_network
(참조: https://dev-yeye.tistory.com/38)
: 컨테이너가 소통하기 위해 컴포즈 파일에 driver: bridge로 함
networks:
mh_network:
driver: bridge
external: true
: 각각에 추가
networks:
- mh_network
: main_server.js 수정 (mongodb주소 수정)
: compose 파일 수정
4. 메인서버 수정
docker-compose down
docker rmi 2mukee/mh_main_image:1.39
docker build --tag 2mukee/mh_main_image:1.39 ./
docker-compose up -d
docker-compose ps
docker logs mh_main_contianer
5. API서버 도커파일 작성
docker-compose down
.env 파일 추가
테스트용 데이터 전체 삭제
도커 컴포즈에 api 서버 추가
docker-compose up -d
docker-compose ps
6. 도커 스택 생성
docker-compose down
docker stack deploy -c docker-compose.yml mh-stack-1.0
: -c는 --compose-file 이란 의미
docker network create --gateway 172.22.0.1 --subnet 172.22.0.0/16 mh_network
※ container_name: Setting the container name is not supported.
: container-name 항목 삭제
※ Docker stack deploy support is limited to networks with scope=swarm
: network를 swarm으로 변경
docker network rm mh_network
docker network create --scope=swarm --driver=bridge --gateway 172.22.0.1 --subnet 172.22.0.0/16 mh_network
※ Error response from daemon: rpc error: code = InvalidArgument desc = name must be valid as a DNS name component
: 스택이름으로 인한 에러
: docker stack deploy -c docker-compose.yml mh-stack-1
7. API 서버 문제 해결
ㆍ도커 모든 컨테이너 종료
: docker rm -f $(docker ps -aq)
ㆍAPI서버 문제 해결
: DB서버에 대한 포트를 27107과 27106을 열기
: API서버에서는 27106을 통해 DB서버에 접근
: 컴포즈 파일에 environment: 추가 / DB서버 27106 오픈
environment:
- YOUTUBE_TOKEN=~~~
ㆍ도커 스웜 네트워크 인터페이스 주소
: docker network rm mh_network
: docker network create --scope=swarm --driver=overlay --gateway 172.22.0.1 --subnet 172.22.0.0/16 mh_network
: 컴포즈 파일 수정
ㆍ네트워크 연결
: 소스코드 수정 <DB주소 = 서비스명>
: 컴포즈 파일의 network 관련 커맨드 삭제
: docker stack deploy -c docker-compose.yml mh-stack-2-4
Refference
https://hoony-gunputer.tistory.com/entry/docker-compose-yaml-%ED%8C%8C%EC%9D%BC-%EC%9E%91%EC%84%B1
https://kin3303.tistory.com/18
https://www.44bits.io/ko/post/almost-perfect-development-environment-with-docker-and-docker-compose
https://code-machina.github.io/2019/08/08/Docker-Swarm-Overlay-Network-Part-1.html
1. API서버의 환경변수 등록 여부 확인 및 등록
: export
: echo $YOUTUBE_TOKEN
: export YOUTUBE_TOKEN=AIzaSyCml_XArtWfOdQLn2PJMUxW9RKkW8eX0rY
2. API 서버 node 버전 업데이트
: yum -y install gcc-c++ make wget
: nvm install nodejs
=> 메인서버 및 api서버 도커 파일 수정 및 컴포즈 파일 수정
3. 메인서버 및 API서버 베이스 이미지 변경
: node:14.17.6 이미지로 변경
: 재빌드 / push
4. DB서버 moharmookji DB생성
: 메인서버 및 API서버에서 mohaemookji로 실행
: API 서버 로그 확인
1. 도커 컴포즈 속성 및 도커 네트워크 정리
: https://2mukee.tistory.com/233
: https://2mukee.tistory.com/234
: yml 작성법 정리
=> 도커 컴포즈 파일 수정
2. 도커 컴포즈 수정 및 env파일 생성
version: '3.8'
services:
main:
image: 2mukee/mh_main_image:1.60
ports:
- 443:17260
links:
- db
db:
image: 2mukee/mh_db_image:1.11
expose:
- 27107:27107
- 27106:27106
api:
image: 2mukee/mh_api_image:1.30
links:
- main
- db
env_file:
- ./mh-db.env
mh-db.env
YOUTUBE_TOKEN=
MONGODB_CONNECTION=
3. 컨테이너 안정화
: DB서버 mongoose 관련 경고 제거
: 메인 컨테이너 경고 제거
: API 컨테이너 경고 제거
=> port 번호 통일 및 mongoDB의 포트번호 변경 (보류)
=> 애초에 mongodb 이미지에 27017포트가 expose되어있고
다른 포트로의 전환 불가
4. DB서버 수정
=> mohaemookji라는 DB생성되도록
=> volume연결시켜서 로컬 디렉터리에 데이터가 저장되도록 -> 이후 dbpath 설정
: DB서버 기반 <우분투>
=> 무산
오늘의 목표
1. 서버 컴퓨터에 젠킨스 설치
2. 깃허브와 젠킨스 연동
3. 젠킨스와 도커 연동
CentOs 7에 젠킨스 설치
# yum 레포지터리에 젠킨스 레드햇 안정화 버전 레포지터리 추가
wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo
# rpm에 젠킨스 추가
rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
# 젠킨스 설치
yum install jenkins
※ Requires: daemonize 오류
: yum update -y
: yum install epel-release -y
: yum install daemonize -y
: yum install jenkins -y
※ public key for jenkins-2.303.1-1.1.noarch.rpm is not installed 오류
: rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 젠킨스 설치 확인
rpm -qa | grep jenkins
# 젠킨스 포트변경 (8080에서 다른 포트로)
vi /etc/sysconfig/jenkins
(56번째 줄)
JENKINS_PORT="18260"
# 방화벽 설정 (18260포트 개방 / HTTP 서비스 개방)
firewall-cmd --zone=public --add-port=18260/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
# 젠킨스 등록
(jenkins.service is not a native service, redirecting to /sbin/chkconfig. Executing /sbin/chkconfig jenkins on 은 무시해도됨)
systemctl enable jenkins
# 젠킨스 서비스 시작
systemctl start jenkins
※ jenkins[18459]: Starting Jenkins File "/usr/bin/java" is not executable.
: yum install java -y
: systemctl start jenkins
※ java 설치 후에도 java에러가 나올 경우
: which java
: vi /etc/init.d/jenkins
: 74~82번째 줄의 candidates에 java 경로 입력
# 젠킨스 자동실행 설정
chkconfig jenkins on
# 젠킨스 프로세스 확인
ps -ef | grep Jenkins
젠킨스 설치 완료 확인
: http://자신의아이피:18260
: 온프레미스의 경우 공유기에서 포트포워딩 필요
# 초기 비밀번호 확인 및 입력
cat /var/lib/jenkins/secrets/initialAdminPassword
adminstrator password에 비밀번호 입력
젠킨스 계정설정
: 계정명 / 암호 등 입력
: 기본화면 출력 확인
'Development > Project' 카테고리의 다른 글
211011~15 모해묵지 개발일지 (0) | 2021.10.19 |
---|---|
210929~05 모해묵지 개발일지 (0) | 2021.10.19 |
210912~15 모해묵지 개발일지 (0) | 2021.10.19 |
이게 뭐약 개요 (0) | 2021.09.13 |
Hermes Hub 개요 (0) | 2021.09.13 |