Nginx in Gitlab with docker
Categories: Docker
Gitlab
ํ๋ธ๋์ ๋ค๋ฅด๊ฒ ์ค์นํ git ์ ์ฅ์์ด๋ค.
๋ง์๋ง๋ ์ฌ๋๋ค๊ณผ ํ ํ๋ก์ ํธ๋ฅผ ์งํํ๋๋ฐ, ์ธํ๋ผ ๊ตฌ์ฑ๊ณผ ์๋ฒ์ฌ์ด๋๋ฅผ ๋งก๊ฒ ๋์ด์ ๊ทผ๋ ๋์ปค๋ฅผ ์ด์ฌํ ํ๋ ๊ฒ์ด๋ค :)
Gitlab์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- ํ ๋ง์ ์ ์ฅ์๊ฐ ์์์ผ๋ฉด ํ๋ค.
- gitlab์์ ์ ๊ณตํ๋ CI/CD๋ฅผ ์ฌ์ฉ ํด ๋ณด๊ธฐ ์ํจ.
- ๋์ปค ์นํ์ ์ด๊ธฐ ๋๋ฌธ!
How to ?
-
dockerhub์์ gitlab image๋ฅผ ๋์ด์จ๋ค.
docker pull gitlab:latest
-
Gitlab Container์ ์ํ ์ค์ ํ์ผ์ด ํฌํจ๋ docker_compose.gitlab.yml์ ์์ฑํ๋ค.
#docker-compose.gitlab.yml gitlab: image: 'gitlab/gitlab-ce:latest' restart: always hostname: {your_domain} environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://{your_domain}' ports: - '10080:80' - '10443:443' - '10022:22' volumes: - '/{your_work_directory}/gitlab_storage/config:/etc/gitlab' - '/{your_work_directory}/gitlab_storage/logs:/var/log/gitlab' - '/{your_work_directory}/gitlab_storage/data:/var/opt/gitlab'
image๋ ๋์ด์จ gitlab ์ด๋ฏธ์ง
restart๋ ์ฌ์์ ๋์์๋ ๋ค์ ์ปจํ ์ด๋๋ฅผ ์คํ ํ ๊ฒ์ธ์ง ์ฌ๋ถ
environment์์ external์ domain์ ๋ํ ์์ฒญ์ ๋ฐ๊ธฐ ์ํจ์ด๋ฉฐ
ํฌํธ๋ ์ด ์ ๊ฒ์๋ฌผ์์ nginx๋ก reverse proxy๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๊ธฐ์ ๋ค๋ฅธ ํฌํธ์์ ๋ค์ 80, 443, 22๋ก ์ด์ด์ฃผ์๋ค.
volume์ ์ถํ ์ ์ฅ์ ํ์ฅ์ ๋๋นํ์ฌ ์์ ๋๋ ํ ๋ฆฌ์ ๋ฐ์ธ๋ ๋ง์ดํธ๋ก ํ์๋ค. -
์์ ๊ฐ์ด ์์ฑ์ด ๋๋ค๋ฉด, ๋ ๊ฐ์ง์ ๋ฐฉ๋ฒ์ด ์๊ธด๋ค.
- nginx์ gitlab์ ๊ฐ์ด docker_compose -> ๊ฐ์ network๋ก ํฌํธํฌ์๋ฉ
- docker network๋ฅผ ์ด์ฉํ internal network
1๋ฒ ๋ฐฉ๋ฒ์ ์ถํ ์ฟ ๋ฒ๋คํฐ์ค๋ก ํ์ฅํ๊ธฐ ์ํจ๊ณผ ์๋จ์์ nginx container์ผ๋ก reverse proxy๋ฅผ ํ๋ค๋ ๋ชฉ์ ์ ๋ง์ง ์์ 2๋ฒ์ ํํ์๋ค.
-
docker network ํ์ธ
docker network ls
๊ฒฐ๊ณผ๋ฌผ ์ค bridge๊ฐ default์ด๋ฉฐ nginx์ ์ gitlab์ default network๋ก ๋ฌผ๋ ค์๋ค. default network id๋ฅผ ์ด์ฉํด ์ถ์ ํ๋ค.
docker network inspect {network_id}
๊ฐ ์ปจํ ์ด๋์ ํ ๋น๋ ๋ด๋ถ ip๊ฐ ๋ณด์ธ๋ค. ๊ทธ์ ๋ฐ๋ผ nginx์์ ์๋ธ๋๋ฉ์ธ์ ์ด์ฉํด reverse_proxy๋ฅผ ์ค์ ํด ์ค๋ค.
#gitlab.conf server{ listen 80; server_name {git.your_domain}; location / { proxy_pass http://{your_git_container_internal_ip}; proxy_set_header Host $host; ... proxy_set_header ~~ } }
service nginx restart
-
git.your_domain ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๋์ค๋ฉด ์ฑ๊ณต!
Leave a comment