Gitlab, nexus3, mattermost 관련 docker-compose.yml
version: "1"
services:
gitlab:
image: "gitlab/gitlab-ee:15.8.0-ee.0"
container_name: gitlab
restart: always
hostname: "gitlab"
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url '<http://192.168.0.10>'
registry_external_url '<http://192.168.0.10:5005>'
# gitlab_rails['gitlab_shell_ssh_port'] = 8022
gitlab_rails['gitlab_default_projects_features_container_registry'] = true
# nginx['redirect_http_to_https'] = true
# nginx['redirect_http_to_https_port'] = 80
mattermost['enable'] = false
mattermost_external_url '<http://192.168.0.10:8065>'
# mattermost['service_address'] = "192.168.0.10"
# Add any other gitlab.rb configuration here, each on its own line
TZ: 'Asia/Seoul'
GITLAB_ROOT_PASSWORD : "test123!"
network_mode: bridge
expose:
- "80"
- "443"
- "5005"
#- "8022"
#- "8065"
ports:
- "80:80"
- "443:443"
- "5005:5005"
#- "8022:8022"
#- "8065:8065"
volumes:
- "E:\\\\docker\\\\cicd\\\\gitlab\\\\config:/etc/gitlab"
- "E:\\\\docker\\\\cicd\\\\gitlab\\\\logs:/var/log/gitlab"
- "E:\\\\docker\\\\cicd\\\\gitlab\\\\data:/var/opt/gitlab"
#extra_hosts:
#- "luclipse.me:192.168.0.10"
nexus3:
image: 'sonatype/nexus3:3.45.0'
container_name: 'nexus3'
restart: always
expose:
- '8081'
ports:
- '8081:8081'
volumes:
- 'E:\\\\docker\\\\cicd\\\\nexus-data:/nexus-data'
environment:
TZ: "Asia/Seoul"
mattermost:
image: 'mattermost/mattermost-preview:7.2.0'
container_name : mattermost
restart: always
hostname: "mattermost"
expose:
- '8065'
ports:
- '8065:8065'
volumes:
- 'E:\\\\docker\\\\cicd\\\\mattermost-data:/mm/mattermost-data'
- 'E:\\\\docker\\\\cicd\\\\mattermost-data\\\\mysql:/var/lib/mysql'
gitlab-runner:
image: 'gitlab/gitlab-runner:alpine3.15-v15.7.1'
container_name: 'gitlab-runner'
restart: always
volumes:
- 'E:\\\\docker\\\\cicd\\\\gitlab-runner\\\\config:/etc/gitlab-runner'
- '/var/run/docker.sock:/var/run/docker.sock'
위 코드는 만들어진 이미지만 처리. 이미지를 빌드 하는것도 있음.
docker-compose up -d #도커 백그라운드 실행
docker-compose up --force-recreate #도커 컨테이너 새로 만들기
docker-compose up --build #도커 이미지 빌드 후 compose up
docker-compose start # 정지한 컨테이너를 재개
docker-compose start mysql # mysql 컨테이너만 재개
docker-compose restart # 이미 실행 중인 컨테이너 다시 시작
docker-compose restart redis # 이미 실행중인 redis 재시작
docker-compose stop # gracefully stop함.
docker-compose stop wordpress
docker-compose down # stop 뿐만 아니라 컨테이너 삭제까지
docker-compose logs
docker-compose logs -f # 로그 watching
docker-compose ps # 컨테이너 목록
docker-compose exec [컨테이너] [명령어]
docker-compose exec wordpress bash # wordpress에서 bash 명령어 실행
docker-compose build # build 부분에 정의된 대로 빌드
docker-compose build wordpress # wordpess 컨테이너만 빌드
docker-compose run [service] [command] # 이미 docker-compose 가동 중인 것과 별개로 하나 더 올릴 때
docker-compose run nginx bash
docker-compose.yml 파일의 명세 버전. 버전에 따라 도커 엔진 버전도 다름
docs.docker.com/compose/compose-file/ 참고.
version: '2'
컨테이너에 사용할 이미지 이름과 태그(버전) 태그를 생략하면 최신 버전을 설치
이미지가 없으면 자동으로 pull하기 때문에 굳이 수작업으로 로컬에 설치할 필요 없음.
ports에 있어서 일반 dockerfile을 구성할 때와 마찬가지로 호스트 포트로 접근해야 내용을 볼 수있음
services:
django:
image: ...
ports:
- "8000:80" # 호스트 포트:컨테이너 포트
postgres:
image: ....
이미지를 자체 빌드 후 사용할 경우 build를 이용할 경우에 사용합니다. 이미지 빌드를 위한 dockerfile이 필요하니까 지정해주면 됨. 자체 빌드니까 image 속성 대신 사용함.
docker-compose build를 통해서 빌드한 후 docker-compose up해주면 됨.
services:
django:
build:
context: .
dockerfile: ./compose/django/Dockerfile-dev
postgres:
image: ....
사용하고자 하는 이미지의 환경 변수.
여기서, dockerfile의 환경변수와 docker-compose.yml의 환경변수가 중복되어서 올라가면
우선순위는 다음과 같음. 즉, docker.compose.yml이 덮어쓰게 됨.
services:
db:
image: mysql:5.7 #사용할 이미지
volumes:
- ./mysql:/var/lib/mysql # 볼륨(컨테이너가 죽어도 데이터를 유지)
restart: always # 컨테이너가 죽지 않고 계속
environment: # 환경변수
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
services:
nginx:
image: nginx
ports:
- 8080:80
volumes:
- ./:/usr/share/nginx/html
link:
- mysql:db
docker cli 사용할 때 --link와 동일함. {연결할 컨테이너 이름}:{해당 컨테이너에서 참고할 이름}
그러나 기본적으로 docker-compose 내부에선 모든 컨터네이너가 소통할 수 있기 때문에 사용되지 않음.
services:
nginx:
image: nginx
ports:
- 8080:80
link:
- mysql:db
의존성 명시 예를 들어 아래와 같이 써 있다면, nginx는 mysql에 의존하고 있으므로 mysql 이미지가 먼저 실행된 후에 그 다음에 nginx 이미지가 실행됨
services:
mysql:
image: mysql
...
nginx:
image: nginx
ports:
- 8080:80
depends_on:
- mysql
docker run -it -p 8080:80 -v $(pwd):/usr/share/nginx/html nginx로 실행하던 것을 docker-compose.yml로 만들면 다음과 같이 작성될 수 있음. $(pwd)꼴로 사용못하고, 직접 경로를 준 것만 다름.
version: '3'
services:
nginx:
image: nginx
ports:
- 8080:80
volumes:
- ./:/usr/share/nginx/html
mysql 실행하면서 읽어들이는 환경 변수들이 있으니 아래처럼 설정해주고,
db를 먼저 켜도록 depends_on을 wordpress에 세팅해주면 된다.
version: '3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: rootpwd
MYSQL_DATABASE: databasename
MYSQL_USER: user
MYSQL_PASSWORD: userpwd
wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: wp
WORDPRESS_DB_NAME: wp
depends_on:
- db
volumes:
db_data: {}
dockerfile로 빌드한 후에 compose로 올렸음.
docker-compose up -d --build
Git(깃)으로 형상관리 하는 이유와 개념! (0) | 2023.01.25 |
---|
댓글 영역