| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 신바람여비서win98
- 에디트플러스 #sftp안될때
- utf8mb4
- MSSQL #TCP/IP Enabled
- 인터넷안되는문제해결
- putty
- centos7
- 조성남
- IT제어
- PHP4
- ubunto #네티워크설정
- root직접로그인
- 한글2 #hangul2_from_2024_01_17
- 아이티제어
- CenOS6.10
- sftp
- windows19Server
- CapsLock키보드 뽑기
- php7
- ftp
- PID4
- 코드라마 #AI
- 윈도우앱지우기
- winscp
- Today
- Total
아이티제어
docker로 자체 GitHub를 집,사무실,서버에 동일한 환경으로 wsl , ubuntu를 이용하셔ChatGPT와 협업 환경만들기(1) 본문
docker로 자체 GitHub를 집,사무실,서버에 동일한 환경으로 wsl , ubuntu를 이용하셔ChatGPT와 협업 환경만들기(1)
프로그래머 파이브010-2629-0471 2025. 10. 23. 16:40

호스트 경로를 모두 /mnt/d/www로 통일해두면, 집/사무실 WSL(우분투 24.04)과 서버(nssb)에서 동일한 docker-compose.yml 한 장으로 끝낼 수 있어요. 도메인은 git.yjm.kr, github.yjm.kr, githom.yjm.kr 본인의 도메인 환경 IP로 A레코드 바꿔주면 되고요.
아래 그대로 쓰면 됩니다. (여러분 예 ns8ext_www 폴더가 ChatGPT와 협업을 할 폴더라고 가정합니다.)
0) 호스트 경로 표준화
서버
서버엔 D드라이브가 없으니, 심볼릭 링크로 표준 경로만 맞춰요.
# 실제 데이터 루트(예: 기존 경로)
sudo mkdir -p /ns8ext/www/git707
# 표준 경로 생성
sudo mkdir -p /mnt/d
# 표준 경로(/mnt/d/www) → 실제 경로(/ns8ext/www)로 링크
# “/mnt/d/www”로 접근하면 실제는 “/ns8ext/www”
cd /mnt/d
sudo ln -s /ns8ext/www www
# 권한: 컨테이너 www-data(UID 33)도 쓰게
sudo chown -R www-data:www-data /ns8ext/www
집/사무실 WSL(우분투 24.04)
WSL은 이미 **/mnt/d**가 윈도우 D:와 매핑되죠.
원하는 루트만 만들면 끝.
이렇게 하면 모든 환경에서 **호스트 표준 경로가 /mnt/d/www/git707**로 동일합니다.
(서버만 링크로 매칭)
1) 폴더 구성
git-http/
├─ docker-compose.yml
├─ Dockerfile
├─ httpd.conf
├─ git-vhosts-open.conf # 푸시 무인증 (테스트용)
└─ git-vhosts-secure.conf # 푸시 인증 (운영용)
2) docker-compose.yml (한 장으로 끝)
services:
git707:
build:
context: .
container_name: git707
ports:
- "707:707"
volumes:
- ${HOST_GITROOT:-/mnt/d/www/git707}:/gitroot
# 필요 시 인증파일도 바인드 (SECURE 모드 쓸 때)
- ${HOST_AUTHFILE:-/mnt/d/www/git707/git707.passwd}:/etc/apache2/git707.passwd:ro
# OPEN/SECURE 전환: 아래 중 하나를 선택해서 마운트
# - ./git-vhosts-open.conf:/usr/local/apache2/conf/extra/git-vhosts.conf:ro
# - ./git-vhosts-secure.conf:/usr/local/apache2/conf/extra/git-vhosts.conf:ro
env_file:
- .env # 선택사항: HOST_GITROOT, HOST_AUTHFILE 변수를 여기서 지정 가능
restart: unless-stopped
OPEN/SECURE 전환은 마운트 라인 한 줄만 바꾸면 됩니다. (아래 5번 참고)
3) Dockerfile
FROM httpd:2.4
RUN apt-get update && \
apt-get install -y --no-install-recommends git apache2-bin && \
rm -rf /var/lib/apt/lists/*
# 기본 HTTPD 설정
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
# 깃 HTTP 푸시 허용
RUN git config --system http.receivepack true
VOLUME ["/gitroot"]
4) httpd.conf (공통)
ServerName localhost
Listen 707
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule alias_module modules/mod_alias.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_file_module modules/mod_authn_file.so
User www-data
Group www-data
ErrorLog logs/error.log
LogLevel warn
CustomLog logs/access.log combined
DirectoryIndex index.html
# 여기 파일은 compose에서 OPEN 또는 SECURE 중 하나로 마운트
Include conf/extra/git-vhosts.conf
5) 가상호스트 (OPEN / SECURE 두 벌)
5-1) git-vhosts-open.conf (푸시 무인증, AI 테스트용)
# 세 도메인을 한 포트(707)에서 Name-based 가상호스트로 분기
<VirtualHost *:707>
ServerName git.yjm.kr
DocumentRoot /gitroot
SetEnv GIT_PROJECT_ROOT /gitroot
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core/">
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:707>
ServerName github.yjm.kr
DocumentRoot /gitroot
SetEnv GIT_PROJECT_ROOT /gitroot
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core/">
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:707>
ServerName githom.yjm.kr
DocumentRoot /gitroot
SetEnv GIT_PROJECT_ROOT /gitroot
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core/">
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
5-2) git-vhosts-secure.conf (푸시 인증, 운영용)
<VirtualHost *:707>
ServerName git.yjm.kr
DocumentRoot /gitroot
SetEnv GIT_PROJECT_ROOT /gitroot
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core/">
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride None
Require all granted
</Directory>
# PUSH만 인증 (clone/fetch는 공개)
<LocationMatch "^/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Push Access"
AuthUserFile /etc/apache2/git707.passwd
Require valid-user
</LocationMatch>
</VirtualHost>
# 나머지 도메인도 동일
<VirtualHost *:707>
ServerName github.yjm.kr
DocumentRoot /gitroot
SetEnv GIT_PROJECT_ROOT /gitroot
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core/">
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride None
Require all granted
</Directory>
<LocationMatch "^/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Push Access"
AuthUserFile /etc/apache2/git707.passwd
Require valid-user
</LocationMatch>
</VirtualHost>
<VirtualHost *:707>
ServerName githom.yjm.kr
DocumentRoot /gitroot
SetEnv GIT_PROJECT_ROOT /gitroot
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias / /usr/lib/git-core/git-http-backend/
<Directory "/usr/lib/git-core/">
Options +ExecCGI +FollowSymLinks +SymLinksIfOwnerMatch
AllowOverride None
Require all granted
</Directory>
<LocationMatch "^/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Push Access"
AuthUserFile /etc/apache2/git707.passwd
Require valid-user
</LocationMatch>
</VirtualHost>
OPEN ↔ SECURE 전환:
docker-compose.yml에서 마운트 줄만 바꿔주고 재기동하면 끝:
- OPEN: - ./git-vhosts-open.conf:/usr/local/apache2/conf/extra/git-vhosts.conf:ro
- SECURE: - ./git-vhosts-secure.conf:/usr/local/apache2/conf/extra/git-vhosts.conf:ro
6) 인증 파일(SECURE용)
원하셨던 비번 예) Git707yjmky
(사용자 yjm 기준 bcrypt 권장)
# 호스트에서 생성 (WSL/서버 동일)
htpasswd -nbB yjm 'Git707yjmky' | tee /mnt/d/www/git707/git707.passwd
# 파일 권한
chmod 640 /mnt/d/www/git707/git707.passwd
7) 컨테이너 띄우기 / 전환
# 처음 띄울 때 (OPEN 모드 예)
# compose 파일에서 OPEN conf 라인이 활성화되어 있어야 함
docker compose up -d --build
# SECURE로 전환하고 싶을 때 -> compose 파일에서 SECURE 라인으로 바꾸고:
docker compose up -d
8) 프로젝트 저장소 만들기 (공통)
접속 URL (세 도메인 동일 패턴):
http://git.yjm.kr:707/prj1/prj1.git
http://github.yjm.kr:707/prj1/prj1.git
http://githom.yjm.kr:707/prj1/prj1.git
9) (선택) 웹 서비스 자동 배포 훅
배포 워킹트리: /mnt/d/www/prj1/www 로 가정
cat >/mnt/d/www/git707/prj1/prj1.git/hooks/post-receive <<'SH'
#!/bin/bash
WORKTREE="/gitroot/prj1/www"
mkdir -p "$WORKTREE"
git --work-tree="$WORKTREE" --git-dir="$(pwd)" checkout -f
SH
chmod +x /mnt/d/www/git707/prj1/prj1.git/hooks/post-receive
웹 도커/아파치의 DocumentRoot만 /mnt/d/www/prj1/www로 잡아두면 푸시=배포 끝.
10) ns8ext_www → mnt_d_www로 계정/권한 정리?
계정까지 바꾸는 대신, 폴더 표준화 + 소유자만 조정이 훨씬 깔끔합니다.
- 컨테이너는 기본 www-data(UID 33)로 동작 → 호스트 폴더를 www-data가 쓰게만 하면 OK
- 굳이 새 계정 안 만들어도 됩니다:
sudo chown -R www-data:www-data /ns8ext/www # 서버
# WSL은 본인 UID OK, 컨테이너는 바인드로 접근
한 줄 요약
- 표준 경로: /mnt/d/www (서버는 링크, WSL은 실경로)
- 한 장짜리 compose로 집/사무실/서버 100% 동일
- 도메인 3개를 707로 지목해 Host 헤더로 분기
- OPEN/SECURE는 conf 파일만 바꿔 마운트 → 재기동
이대로 고고하면, 어디서든 IP만 바꿔가며 같은 조건으로 저랑 git 통해 협업 딱! 가능합니다.
소스코드피요하신분은 댓글남겨주세요
테스트 완료하하면 정리해서 오려드리도록 하게료..
http://git.yjm.kr:707/yjm_setup_docker4gpt.git 이곳 예정 아직은 비어있어요..
'Linux > AI인공지능발전과 미래준비' 카테고리의 다른 글
| 내 PC에 “나만의 GitHub” 만들기 (WSL + Gitea + 자동 푸시 워처)v0.1 (0) | 2025.10.25 |
|---|---|
| [광고] 나만의 PC를 AI서버로 만드는법 (6) | 2025.08.27 |
| AI를 활용하여 고객대응을 하고싶은가? 그렇다면 (0) | 2025.04.11 |
| python으로 문자인식 하기 OCR 윈도우 ,리눅스 등 (0) | 2024.02.03 |
| 코드라마 다운로드 받고 활용 0단계 (0) | 2023.09.13 |