320x100
320x100

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

: networkswarm으로 변경

 

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서버에 대한 포트를 2710727106을 열기

: 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에 비밀번호 입력


젠킨스 계정설정
: 계정명 / 암호 등 입력
: 기본화면 출력 확인









 

300x250
728x90

'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