AWS EC2에 Docker Compose로 Redmine 배포

사전 준비



AWS EC2에 Docker로 Docker Compose(1.29.2) 도입을 참조하여 Docker Compose를 사용할 수 있는 환경을 준비합니다.

작업 디렉토리로 이동


[ec2-user@ip-xxx-xx-xx-xxx container01]$ cd /home/docker/container01

docker-compose.yml 만들기



작성한 docker-compose.yml은 아래에 배치.

/home/docker/container01
├ docker-compose.yml

이번에도 시도할 때 AWS EC2에 Docker로 Redmine 배포 을 참조하였습니다.
  • 컨테이너는 Redmine, MySQL을 나누어 yml 파일을 만듭니다
  • Redmine의 베이스 이미지에는 「redmine:passenger」(※1)를 지정
  • ports에는 3000번 포트를 지정
  • 볼륨은 컨테이너 폐기와 함께 데이터가 손실되지 않도록 외부 마운트 대상 (컨테이너 외부)의 스토리지에 저장됩니다.
  • MySQL의 베이스 이미지에는 「mysql:5.7」을 지정(글쓰기 시점의 최신)

  • ※1
    Phusion Passenger (비공식적으로 mod_rails와 mod_rack라고도 함)는 Apache에서 Redmaine 등 Ruby on Rails 애플리케이션을 실행하기위한 소프트웨어
    version: '3.9'
    
    services:
      redmine:
        image: redmine:passenger
        container_name: redmine
        ports:
          - 3000:3000
        environment:
          TZ: Asia/Tokyo
          REDMINE_DB_MYSQL: mysql
          REDMINE_DB_DATABASE: redmine
          REDMINE_DB_USERNAME: redmine
          REDMINE_DB_PASSWORD: redmine
          REDMINE_DB_ENCODING: utf8
        depends_on:
          - mysql
        restart: always
        volumes:
          - /var/www/redmine/files:/usr/src/redmine/files
          - /var/www/redmine/log:/usr/src/redmine/log
          - /var/www/redmine/plugins:/usr/src/redmine/plugins
          - /var/www/redmine/public/themes:/usr/src/redmine/public/themes
    
    
      mysql:
        image: mysql:5.7
        container_name: mysql
        restart: always
        environment:
          TZ: Asia/Tokyo
          MYSQL_ROOT_PASSWORD: devops
          MYSQL_DATABASE: redmine
          MYSQL_USER: redmine
          MYSQL_PASSWORD: redmine
        volumes:
          - mysql-data:/var/lib/mysql
        command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    
    
    volumes:
      mysql-data:
        name: mysql-redmine
    

    docker-compose 명령을 실행하여 Docker 컨테이너(여러 개)를 백그라운드 시작


    [ec2-user@ip-xxx-xx-xx-xxx container01]$ docker-compose up -d
    Creating network "container01_default" with the default driver
    Creating volume "mysql-redmine" with default driver
    Pulling mysql (mysql:5.7)...
    5.7: Pulling from library/mysql
    69692152171a: Pull complete
    1651b0be3df3: Pull complete
    951da7386bc8: Pull complete
    0f86c95aa242: Pull complete
    37ba2d8bd4fe: Pull complete
    6d278bb05e94: Pull complete
    497efbd93a3e: Pull complete
    a023ae82eef5: Pull complete
    e76c35f20ee7: Pull complete
    e887524d2ef9: Pull complete
    ccb65627e1c3: Pull complete
    Digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Status: Downloaded newer image for mysql:5.7
    Pulling redmine (redmine:passenger)...
    passenger: Pulling from library/redmine
    69692152171a: Already exists
    0a1f774fea41: Pull complete
    3b32b9ebaa42: Pull complete
    8115e4beca50: Pull complete
    f6fc87221cc8: Pull complete
    fecc3ffdf342: Pull complete
    2c0766a9fc7f: Pull complete
    ce9a5ea49a97: Pull complete
    3e4aa5d089ef: Pull complete
    76af3ce3b4e9: Pull complete
    996a27fc010d: Pull complete
    343439c2257c: Pull complete
    c3f9dc058e2a: Pull complete
    e46a18da2156: Pull complete
    Digest: sha256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    Status: Downloaded newer image for redmine:passenger
    Creating mysql ... done
    Creating redmine ... done
    

    컨테이너 상태 확인


    [ec2-user@ip-xxx-xx-xx-xxx container01]$ sudo docker ps
    CONTAINER ID   IMAGE               COMMAND                  CREATED         STATUS         PORTS                    NAMES
    5d96ebfc23a2   redmine:passenger   "/docker-entrypoint.…"   2 minutes ago   Up 2 minutes   0.0.0.0:3000->3000/tcp   redmine
    be9531f677b2   mysql:5.7           "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes   3306/tcp, 33060/tcp      mysql
    

    MySQL 구성 설정


    [ec2-user@ip-xxx-xx-xx-xxx container01]$ sudo docker exec -it mysql mysql_config_editor set --host=localhost --user=redmine --password
    Enter password:    ←★任意のパスワードを入力
    

    Redmine용 EC2 포트 개방



    생성한 "docker-compose.yml"에서 포트 3000번을 지정했으므로 EC2의 "보안 그룹"을 표시하고 인바운드 규칙에 3000번 포트를 추가해야 합니다.


    Redmine 방문



    브라우저를 시작하고 http://[Elastic IP アドレス]:3000에 액세스합니다.
    아래와 같이 Redmine 화면이 표시되면 완료.


    다음 예정



    AWS EC2에 Docker Compose에서 Jenkins를 도입하는 기사를 게시할 예정.

    좋은 웹페이지 즐겨찾기