MacでDockerコンテナ上にRedmineを構築する

## やろうとした理由

Redmineに対する知識が足りないなーと思ったから。
業務で使っているけれどいつも使う側なので、提供する側のことも覚えておかないとこれから困りそう。

## MacでDockerコンテナ上にRedmineを構築するよ

本当は、自分のサーバに立てたかったんだけど・・・断念。
他の人も使えるならEC2上に立てて提供するとか考えたんだけど、現状私しかいないし、私もそんなにガッツリ使い込むようなこともなさそうなので。
簡単な実験と動作確認であれば、自分のMacにインストールすれば良いかな、と。

本当にMacにRedmineを直接入れようとしたけれど、Dockerでいいんじゃないか？ついでにdockerも勉強しなきゃ、ということでDockerを使うことにしました。

### Dockerをインストールしておくこと

MacにはDocker Desktopをインストールしておきました。
この構築時点の状態は次の通り。

![スクリーンショット 2020-07-25 16.22.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244560/10936f20-711b-5a77-4a5b-b38d26110ac5.png)

### DockerでRedmineを立ち上げる・・・前の事前確認

#### 1. Macのバージョンを確認しておく

```
$ sw_vers
ProductName:	Mac OS X
ProductVersion:	10.15.5
BuildVersion:	19F101
```

#### 2. Dockerのバージョンを確認しておく

```
$ docker --version
Docker version 19.03.8, build afacb8b
```

#### 3. Dockerイメージを確認しておく

```
$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
hybridcloudibm/wexdg   latest              b482197b4310        2 years ago         5.83GB
```

#### 4. 起動中のDockerコンテナを確認しておく

```
$ docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                       PORTS                                      NAMES
c522c16cdb88        hybridcloudibm/wexdg   "/opt/ibm/wex/sbin/e…"   22 months ago       Exited (255) 20 months ago   8000/tcp, 0.0.0.0:443->443/tcp, 9080/tcp   wex-d-g
```

#### 5. docker-compose.ymlファイルを作成しておく

docker-composeするために必要なので、用意しておきましょう。

```yaml:docker-compose.yml
version: '3.8'
services:
  redmine:
    container_name: redmine
    image: redmine
    restart: always
    ports:
      - 3000:3000
    volumes:
      - ./Redmine/plugins:/usr/src/redmine/plugins
      - ./Redmine/themes:/usr/src/redmine/public/themes
    environment:
      REDMINE_DB_MYSQL: redmine-db
      REDMINE_DB_PASSWORD: redmine
  redmine-db:
    image: mariadb
    container_name: redmine-db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: redmine
      MYSQL_DATABASE: redmine
    volumes:
      - ./db:/var/lib/mysql
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
```

### DockerでRedmineを立ち上げる（docker-compose）

#### 1. docker-composeコマンドを実行する

一度、docker-compose.ymlの書き方がまずくて失敗しました。

```
$ docker-compose up -d
Pulling redmine (redmine:)...
latest: Pulling from library/redmine
6ec8c9369e08: Pull complete
c307964a7468: Pull complete
fd2d286493eb: Pull complete
cf773e09df35: Pull complete
f41f225850f3: Pull complete
f5fa7c9620c6: Pull complete
d8bca7298389: Pull complete
80af857119c9: Pull complete
4c1c6ad5d293: Pull complete
11ed9a8222ad: Pull complete
d89a2de0559e: Pull complete
fa1eb2d25805: Pull complete
25bd4bebd31d: Pull complete
Digest: sha256:d2b5a7acbf2ecbc7f5f7078cd3479237553f921ef636e8112bb7430b32ad0222
Status: Downloaded newer image for redmine:latest
Pulling redmine-db (mariadb:)...
latest: Pulling from library/mariadb
3ff22d22a855: Pull complete
e7cb79d19722: Pull complete
323d0d660b6a: Pull complete
b7f616834fd0: Pull complete
78ed0160f03e: Pull complete
a122e9306ac4: Pull complete
673e89352b19: Pull complete
caf1e694359b: Pull complete
04f5e4f6ead3: Pull complete
a41772aadb3d: Pull complete
c3811aa2fa0a: Pull complete
655ad574d3c7: Pull complete
90ae536d75f0: Pull complete
Digest: sha256:812d3a450addcfe416420c72311798f3f3109a11d9677716dc631c429221880c
Status: Downloaded newer image for mariadb:latest
Creating redmine    ... done
Creating redmine-db ... done
```

#### 2. dockerイメージを確認する

redmineとmariadbが追加されていることが確認できます。

```
$ docker images
REPOSITORY             TAG                 IMAGE ID            CREATED             SIZE
mariadb                latest              8075b7694a2d        15 hours ago        407MB
redmine                latest              809721a71330        2 days ago          544MB
hybridcloudibm/wexdg   latest              b482197b4310        2 years ago         5.83GB
```

#### 3. 起動中のDockerコンテナを確認する

redmineとmariadbが起動（STATUSでUpになっている）していることが確認できます。

```
$ docker ps -a
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS                       PORTS                                      NAMES
e9c787057ae4        redmine                "/docker-entrypoint.…"   25 seconds ago      Up 23 seconds                0.0.0.0:3000->3000/tcp                     redmine
8619aa4a4c36        mariadb                "docker-entrypoint.s…"   25 seconds ago      Up 23 seconds                3306/tcp                                   redmine-db
c522c16cdb88        hybridcloudibm/wexdg   "/opt/ibm/wex/sbin/e…"   22 months ago       Exited (255) 20 months ago   8000/tcp, 0.0.0.0:443->443/tcp, 9080/tcp   wex-d-g
```

#### 4. ブラウザで起動したRedmineを確認する

[http://localhost:3000/](http://localhost:3000/) で開くはず。
開かなかったら、ここまでの何かが悪い。

![20200724_IMG_0000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244560/1602e851-88ae-a350-0796-4c78f9aa05a9.png)

これで本来やりたかったことができる・・・！
Redmineへのログインは admin/admin です。
ログインしたらパスワード変更を求められます。

## やってみた感想

本来やりたかったRedmine以前のDocker周りで苦労しました。
Dockerを全然覚えていないんだな、ということを再認識。
使いこなせると本当に便利だと思うんだけれど・・・コンテナも今や「できて当たり前」なので、ちゃんと勉強しなきゃ。

## 参考にさせていただいた記事など

- [[Docker] Mac 上の Docker で Redmine 環境を構築する](https://blog.hiros-dot.net/?p=9007)
- [MacにRedmineを入れて社内で共有するまでやってみたが壮大な冒険になった](https://qiita.com/erii/items/e5e9356d5bf11db8414a)
- [Redmine.jp](https://redmine.jp/install/)
- [Redmineガイド](http://guide.redmine.jp/RedmineInstall/#Requirements)
- [Docker-docs-ja](http://docs.docker.jp/compose/rails.html)
- [Dockerイメージとコンテナの削除方法](https://qiita.com/tifa2chan/items/e9aa408244687a63a0ae)
- [Dockerコンテナの作成、起動〜停止まで](https://qiita.com/kooohei/items/0e788a2ce8c30f9dba53)