티스토리 뷰

반응형

 

여러 개의 컨테이너를 하나로 묶는 개념인 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 에는 상대 경로를 지정이 가능
  • 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
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
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
글 보관함