티스토리 뷰
Docker
[Docker] docker-compose 로 Gitlab, Jenkins, Redmine, MySql, Nginx, Nexus 실행
Jane Kwon 2021. 2. 9. 15:39반응형
여러 개의 컨테이너를 하나로 묶는 개념인 docker-compose 를 사용하면
컨테이너 실행에 필요한 옵션을 docker-compose.yml 이라는 파일에 적어둘 수 있고,
컨테이너 간 실행 순서나 의존성도 관리할 수 있다는 게 장점이 있다.
우선 docker-compose 를 다운로드
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
docker-compose 를 설치 후 버전 확인
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
docker-compose.yml 파일을 생성 후
$ vi docker-compose.yml
container 로 올릴 이미지 파일 작성
- Gitlab
version: '3' services: gitlab: image: 'gitlab/gitlab-ee:12.8.1-ee.0' restart: always hostname: 'gitlab.gyurida.shop' container_name: gitlab environment: TZ: 'Asia/Seoul' GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.gyurida.shop' letsencrypt['enable'] = false nginx['redirect_http_to_https'] = false nginx['listen_https'] = false nginx['listen_port'] = 8929 gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '8929:8929' - '2224:22' volumes: - '/home/jane/conf/gitlab:/etc/gitlab' - '/home/jane/log/gitlab:/var/log/gitlab' - '/home/jane/data/gitlab:/var/opt/gitlab'
- version
- YAML 파일 포멧의 버전을 의미하고 여기서는 3이라 적으면 3으로 시작하는 최신 버전을 사용한다는 의미 - services
- compose 에서는 컨테이너 대신 서비스라는 개념을 사용하며,
생성될 컨테이너의 정보로 services 바로 아래에 서비스명을 기술 할 수 있으며 위의 경우 web 이 서비스명 - image
- docker images 명령어를 실행하면 노출되는 repository 명 - environment
- docker run 명령어 옵션 -e 와 동일 - ports
- docker run 명령어 옵션 -p 와 같으며 해당 컨테이너 내에서 오픈 할 포트 번호를 지정 - volumes
- docker run 으로 컨테이너를 실행할 때 --volume 옵션을 사용하여
데이터베이스의 데이터를 로컬 컴퓨터에 저장했던 부분과 동일하며,
다만 docker-compose.yml 의 volumes 에는 상대 경로를 지정이 가능
- version
- Jenkins
version: '3' services: jenkins: image: 'jenkins/jenkins:lts' restart: always container_name: 'jenkins' environment: TZ: 'Asia/Seoul' ports: - '9080:8080' volumes: - /home/jane/log/jenkins:/home/jane/logs - /home/jane/data/jenkins:/home/jane/data - /home/jane/bin/jenkins:/home/jane/bin - /home/jane/.ssh:/home/jane/.ssh - /home/jane/.aws:/home/jane/.aws - /var/run/docker.sock:/var/run/docker.sock
- Redmine & MySql
version: '3' services: redmine: depends_on: - mysql image: redmine:4.1.0 restart: always container_name: redmine environment: TZ: 'Asia/Seoul' REDMINE_DB_MYSQL: mysql REDMINE_DB_USERNAME: root REDMINE_DB_PASSWORD: ROOT-PASSWORD REDMINE_DB_DATABASE: redmine_default REDMINE_DB_ENCODING: utf8 # REDMINE_NO_DB_MIGRATE: true ports: - 9292:3000 volumes: - /home/jane/conf/redmine/configuration.yml:/usr/src/redmine/config/configuration.yml - /home/jane/data/redmine/data/rich_files:/usr/src/redmine/public/system/rich/rich_files/rich_files - /home/jane/data/redmine/data:/usr/src/redmine/files - /home/jane/data/redmine/plugins:/usr/src/redmine/plugins - /home/jane/data/redmine/themes:/usr/src/redmine/public/themes mysql: image: mysql:5.7.29 restart: always container_name: mysql command: - --default-authentication-plugin=mysql_native_password - --character-set-server=utf8mb4 - --collation-server=utf8mb4_unicode_ci environment: TZ: 'Asia/Seoul' MYSQL_ROOT_PASSWORD: 'ROOT-PASSWORD' MYSQL_DATABASE: 'redmine_default' ports: - 3306:3306 volumes: - /home/jane/data/mysql:/var/lib/mysql
- Nginx
version: '3' services: nginx: image: nginx:latest restart: always container_name: nginx environment: TZ: 'Asia/Seoul' ports: - 8080:80 volumes: - /home/jane/conf/nginx/nginx.conf:/etc/nginx/nginx.conf
- Nexus
version: '3' services: nexus: image: sonatype/nexus3:latest restart: always container_name: nexus environment: TZ: 'Asia/Seoul' ports: - 5000:5000 - 8081:8081 volumes: - /home/jane/data/nexus:/nexus-data user: '1002:1002'
작성한 docker-compose.yml 파일 실행
$ docker-compose up -d
반응형
'Docker' 카테고리의 다른 글
[Docker] Jenkins (0) | 2021.02.10 |
---|---|
[Docker] Redmine (0) | 2021.02.10 |
[Docker] Gitlab (0) | 2021.02.10 |
[Docker] docker 재실행시 address already in use 에러 해결 (0) | 2021.02.09 |
[Docker] AWS EC2 ubuntu 에 Docker 설치 (0) | 2021.02.09 |