Docker Compose で OpenProject をインストール

Docker Compose で OpenProject をインストール

OpenProject on Docker

2019.12.1

OpenProject とは

プロジェクト管理ツールは何をお使いですか?

私はJIRAやBacklogを業務で利用することが多いですが、オープンソースで特に制約なく利用できるプロジェクト管理ツールを探した時に OpenProject を見つけました。

どうやら一通りの機能は備わってますし、Dockerでの利用方法も こちら にあったので、これを 無料で作成したOracle Cloud で利用できるようにしてみました。

Docker インストール

まずは Dockerのインストールですね。

SSH接続した状態で、すべてを最新の状態にします。 Oracle Linux は RedHat系 だそうなので、 yum を利用します。

sudo yum update -y

そしてDockerをインストールです。

yum-config-manager --enable ol7_addons
yum install docker-engine

systemctl start docker
systemctl enable docker

これだけでも Docker はインストールできるのですが、利用するたびに sudo をつけることがないように rootユーザー以外がDockerコマンドを利用できるようにしたいと思います。

groupadd docker
service docker restart
usermod -a -G docker opc

これで一応利用できることを確認します。

docker run hello-world

docker-compose インストール

インストール手順は こちら を参考にします。

sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

権限

sudo chmod +x /usr/local/bin/docker-compose

以下コマンドでバージョンが表示されれば無事インストールされています。

docker-compose --version

docker-compose up

以下の docker-compose.yml をコマンド docker-compose up -d で利用できるようになりました。(コピペでご利用の際は[]の箇所を適宜書き換えてください)

今回、サーバーエンジンとして nginx 、SSL認証用に Let's Encrypt も同時に利用したいと思います。

version: '3'

services:
  nginx:
    image: jwilder/nginx-proxy
    container_name: nginx-proxy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - html:/usr/share/nginx/html
      - dhparam:/etc/nginx/dhparam
      - vhost:/etc/nginx/vhost.d
      - certs:/etc/nginx/certs:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy"
    networks:
      - app-net

  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nginx-proxy-lets-encrypt
    restart: always
    depends_on:
      - "nginx"
    volumes:
      - certs:/etc/nginx/certs:rw
      - vhost:/etc/nginx/vhost.d
      - html:/usr/share/nginx/html
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - app-net

  web:
    image: openproject/community:latest
    depends_on:
      - postgres
      - memcached
    volumes:
      - pg-data:/var/lib/postgresql/data
      - ./data:/var/db/openproject
    environment:
      VIRTUAL_HOST: [ホスト名]
      DATABASE_URL: "postgres://opuser:oppassword@postgres:5432/openproject?pool=10&encoding=unicode&timeout=5000&reconnect=true"
      SECRET_KEY_BASE: openproject_secret_key
      CACHE_MEMCACHE_SERVER: memcached
      CACHE_NAMESPACE: openproject
      LETSENCRYPT_HOST: [ホスト名]
      LETSENCRYPT_EMAIL: [メールアドレス]
      EMAIL_DELIVERY_METHOD: smtp
      SMTP_ADDRESS: [SMTPサーバーアドレス]
      SMTP_PORT: 465
      SMTP_DOMAIN: [SMTPサーバードメイン]
      SMTP_AUTHENTICATION: login
      SMTP_USER_NAME: [SMTPユーザー名]
      SMTP_PASSWORD: [SMTPパスワード]
    networks:
      - app-net

  postgres:
    image: postgres:9.6-alpine
    volumes:
      - pg-data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: openproject
      POSTGRES_USER: opuser
      POSTGRES_PASSWORD: oppassword
    networks:
      - app-net

  memcached:
    image: memcached:1.5.7-alpine
    networks:
      - app-net

volumes:
  pg-data:
  certs:
  html:
  vhost:
  dhparam:

networks:
  app-net:
    driver: bridge

まとめ

結論からすると Docker と docker-compose を利用して、 OpenProject を手軽利用できるようになりました。

利用してみての感想としては、流石に Always Free で利用できるインスタンスではやや重い・・・。

しかしながら、UIはシンプルですし実運用する価値は高いかなと思います。