다른 컨테이너의 작업물을 깃 서버 컨테이너에 올릴 수 있도록 할 것이다
다음 글을 참고해 깃 서버를 구축할 것이다.
docker run --privileged -d --name mycent7 centos:7 init
centos 환경에서 깃 서버를 구축하기 위해 먼저 centos 이미지를 통해 컨테이너를 생성한다.
docker exec -it mycent7 bash
mycent7을 실행시킨다.
systemctl --version
yum -y install httpd
systemctl start httpd
systemctl status httpd
systemctl이 잘 작동하는지 확인해본다.
만약, 위 명령어를 입력했을 때 Failed to get D-Bus connection: Operation not permitted 오류가 나온다면 다른 컨테이너에서 연결이 거부된다.
참고로, 나는 docker-compose를 이용해 centos 컨테이너를 만들었을 때 다음과 같은 오류가 발견하였다. docker-compose를 사용하면서 저 오류를 해결할 수 있는 방법은 아직 찾지 못했다. docker-compose를 사용하지 않고, 위 과정을 따른다면 같은 오류가 발생하지 않는다.
yum install git -y
git을 사용하기 위해 centos 환경에 git을 설치한다.
mkdir -p /opt/git/project.git
git init --bare /opt/git/project.git
깃 디렉토리를 생성하고, 해당 디렉토리를 git 환경으로 초기화한다.
ssh-keygen
ssh 키를 만든다.
yum install net-tools
네트워크 상태를 확인하기 위해 net-tools를 설치한다.
yum install openssh-server
ssh 설정을 위해 openssh-server을 설치한다.
netstat -ntl
네트워크 상태를 확인한다.
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
현재는 다음과 같이 되어있을 것이다.
systemctl start sshd
systemctl status sshd
두 명령어를 통해 ssh를 실행시킨다.
netstat -ntl
다시 네트워크 상태를 확인해본다.
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
다음과 같이 22번 포트가 열렸다면 성공이다.
vi /etc/ssh/sshd_config
PermitRootLogin을 찾아 주석을 해제하고 yes로 바꿔준다. >> PermitRootLogin yes
passwd root
root의 비밀번호를 정해준다.
초기 세팅은 끝났다. 이제 다른 컨테이너에서 방금 만든 git 서버에 push할 것이다.
참고로, 두 컨테이너는 같은 network를 가져야한다.
다음 글을 참고해, 네트워크를 생성하고 두 컨테이너를 같은 네트워크를 갖도록 세팅한다.
docker exec -it 컨테이너명 bash
exec 명령어로 컨테이너를 실행시킨다.
git config --global user.email "이메일"
git config --global user.name "이름"
사용자의 이메일과 이름을 입력한다.
mkdir proj
cd proj
git을 clone할 proj 디렉토리를 생성하고 proj 위치로 경로이동한다.
root@1358d29255ff:/proj# git clone ssh://root@mycent7:/opt/git/project.git
Cloning into 'project'...
The authenticity of host 'mycent7 (172.22.0.4)' can't be established.
ECDSA key fingerprint is SHA256:Nm+ziHPDrz7jT8GkbCxN1sZmz1uV+ONAPKDT6RQIWl4.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'mycent7,172.22.0.4' (ECDSA) to the list of known hosts.
root@mycent7's password:
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
git clone ssh://root@깃컨테이너명:/opt/git/project.git을 입력해 clone한다.
Are you sure you want to continue connecting (yes/no/[fingerprint])? 에서 yes를 입력하고,
root@mycent7's password: 에서 아까 설정한 비밀번호를 입력한다.
이후, ls를 해보면 project가 생성되었을 것이다.
cp app.jar /proj/project
git에 commit할 파일을 이 프로젝트 폴더에 복사한다.
git add .
git commit -m "커밋 메시지"
git push origin master
다음 명령을 통해 변경사항을 서버에 반영한다.
[root@e479df48cbaf project.git]# git log
commit afb0c55c2a8305344ba677d78f895e3b460cf96c
Author: parkdaeun <parkdaeun@example.com>
Date: Mon Nov 22 05:53:18 2021 +0000
커밋 메시지
깃 서버 컨테이너로 돌아가, git log를 입력하면 다음과 같이 반영된 커밋이 나타날 것이다.
'Infra > Docker' 카테고리의 다른 글
[Docker] 도커 컨테이너 ssh 설정 (1. 일반 이미지, 2. Linux 이미지) (0) | 2021.12.01 |
---|---|
[Docker] run 옵션 나중에 추가하기 / 컨테이너 커밋 (0) | 2021.11.29 |
[Docker] Apache - Tomcat(SpringBoot) 연동하기 (mod_jk) (0) | 2021.11.19 |
[Docker] Apache Web Server 구축하기 (1) | 2021.11.19 |
[Docker] Docker Compose 사용해 web, db 컨테이너 연결하기 (springboot, mariadb) (2-tier 구조) (0) | 2021.11.17 |