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番ポートを指定
  • volumesにはコンテナ破棄とともにデータが失われないように、外部マウント先(コンテナ外)のストレージに保存
  • 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を導入する記事を投稿予定。