DockerでRedmineを一気に作成(オレオレ証明書Version)

 もはやなんの新鮮味もないDockerでRedmineを構築しました的な記事です。その辺に雨後の筍みたいに生えているし、いまさら自分が書いても仕方ないんですが、AWSで構築しましたとかAzureで構築しました的なところで満足できなくなり、ようやくDockerに手を出したわけです。もっと早く手を出しておけよだからダメなんだよ自分というのが感想です。1回作ればもはや何もしなくていいレベルっぽい位に楽です。ここのコピペです。リンク先のみてやってもらった方が確実かもです。ちなみにホストOSにはDockerインストール済でないと動かないですよ。ちなみに参照元と違うのがファイルを1まとめにしたのとオレオレ証明書で使用できるようにしてお手軽に試せるようにしたとこ位です。IPアドレスでアクセスしてそのまま使用できるところを目指しました。


◆対象Version

  Ubuntu20.04LTS
  Docker version 20.10.6, build 370c289
  docker-compose version 1.29.1, build c34c88b2  


◆作業手順

1.事前準備(IP固定化等)、ホストOSで実行

#IPアドレス変更
$ sudo vi /etc/netplan/00-installer-config.yaml
---------------------------
# This is the network config written by 'subiquity'
network:
  ethernets:
    eth0:
      addresses:
      - 192.168.1.20/24	#変更
      gateway4: 192.168.1.1
      nameservers:
        addresses:
        - 8.8.8.8
        - 8.8.4.4
        - 192.168.1.1
  version: 2
---------------------------
$ sudo netplan apply

#ホスト名変更
$ sudo hostnamectl set-hostname redmine.example.com
$ sudo vi /etc/cloud/cloud.cfg
---------------------------
# This will cause the set+update hostname module to not operate (if true)
preserve_hostname: true		#変更
---------------------------

#DNS設定
$ sudo vi /etc/resolv.conf
---------------------------
nameserver 8.8.8.8	#追記
nameserver 8.8.4.4	#追記
nameserver 127.0.0.53
options edns0 trust-ad
---------------------------

2.Dokerインストール

#https経由のaptリポジトリ許可
$ cd
$ sudo apt update
$ sudo apt-get -y install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

#DockerCEインストール
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt update
$ sudo apt -y install docker-ce

#Docker-composeインストール
#最新バージョン確認 https://github.com/docker/compose/blob/master/CHANGELOG.md

#インストール
$ export compose='最新VersionNO'
$ sudo curl -L https://github.com/docker/compose/releases/download/${compose}/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod 0755 /usr/local/bin/docker-compose
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
$ sudo systemctl enable docker

#一般ユーザでDocker実行可能なように設定
$ getent group docker
docker:x:998:
$ sudo gpasswd -a youruser docker

3.Docker関連ファイル準備

$ mkdir redmine
$ cd redmine
$ mkdir app
$ mkdir web
$ mkdir app/config
$ mkdir web/ssl_certs
$ vi docker-compose.yml
$ vi .env

・docker-compose.yml
-------------------------------------
version: '3.8'

networks:
  web_net:

services:
# nginx
  web:
    image: steveltn/https-portal:1
    container_name: web
    restart: always
    volumes:
      - ./web/ssl_certs:/var/lib/https-portal
    networks:
      - web_net
    ports:
      - '80:80'
      - '443:443'
    env_file:
      - .env
    environment:
      DOMAINS: >-
        ${HOSTNAME_READMINE} -> http://redmine:${APP_DOCKER_PORT}/,
      STAGE: 'local'
    depends_on:
      - redmine
      - reddb

# Redmine Apps
  redmine:
    image: redmine:latest
    container_name: ${APP_CONTAINER_NAME}
    restart: always
    volumes:
      - ./app/plugins:/usr/src/redmine/plugins
      - ./app/themes:/usr/src/redmine/public/themes
      - ./app/config/configuration.yml:/usr/src/redmine/config/configuration.yml
      - ./app/files:/usr/src/redmine/files
    networks:
      - web_net
    expose:
      - ${APP_DOCKER_PORT}
    env_file:
      - .env
    environment:
      - REDMINE_DB_POSTGRES=reddb
      - REDMINE_DB_DATABASE=${DB_NAME}
      - REDMINE_DB_USERNAME=${DB_USER}
      - REDMINE_DB_PASSWORD=${DB_PASSWORD}
      - TZ=${DB_TZ}
    depends_on:
      - reddb

# postgreSQL
  reddb:
    image: postgres:latest
    container_name: ${DB_CONTAINER_NAME}
    restart: always
    volumes:
      - ./db/initdb:/docker-entrypoint-initdb.d
      - ./db/dbdata:/var/lib/postgresql/data
    networks:
      - web_net
    expose:
      - ${DB_DOCKER_PORT}
    env_file:
      - .env
    environment:
      - POSTGRES_DB=${DB_NAME}
      - POSTGRES_USER=${DB_USER}
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - TZ=${DB_TZ}
    command: --port=${DB_DOCKER_PORT}
--------------------------------
・.env
--------------------------------
HOSTNAME_READMINE=192.168.1.211
APP_CONTAINER_NAME=redmine
APP_DOCKER_PORT=3000
DB_CONTAINER_NAME=db_redmine
DB_DOCKER_PORT=5432
DB_USER=redmine
DB_PASSWORD=redmine
DB_NAME=REDMINE_DB
DB_TZ=asia/Tokyo
--------------------------------

4.起動方法

#初回はイメージダウンロードしてくるので時間がかかる
$ cd ~/docker/redmine
$ docker-compose up

※バックグラウンド実行とかあるけど今回は動くか見たかっただけなのでパス

◆参照サイト

・DockerでRedmine関連

https://create-it-myself.com/know-how/launch-https-portal-redmine-postgresql-with-docker-compose/

https://www.cresco.co.jp/blog/entry/15759/

https://laptrinhx.com/imasara-docker-compose-de-redmine-shiyou-with-let-s-encrypt-1636072947/


・自己証明書関連

https://qiita.com/GCkurabe/items/ee86fd80fe16fa9f4731

https://re-engines.com/2019/03/28/docker-https-portal/

https://yassan.hatenablog.jp/entry/advent-calendar-redmine-1211

https://qiita.com/tukiyo3/items/3d1634a1fa0477976f74

https://qiita.com/MahoTakara/items/befb97ab05be17f54fec

https://qiita.com/muk-ai/items/413ae83b0a241495dd34

https://qiita.com/tukiyo3/items/590f3284d992fe5d03fa


・Dockerネットワーク関連



Redmineで後、試してみたいこととしてはAzureのBlob共有ストレージをホストにマウントして、そこにdbファイルと添付ファイルとを逃がす構成にして実用速度に耐えるかを見てみたいなぁと思っていたりします。あとはSambaのADをDockerで構築してそいつに認証を行わせつつAlfrescoと連携させたり的なこととかも試してみたいなぁと思ったりしています。後はチャットツールとかとも連携させてみたいですね。
次回、やるんだろうか・・・・

コメント

このブログの人気の投稿

GASでGoogleDriveのサブフォルダとファイル一覧を出力する

証券外務員1種勉強(計算式暗記用メモ)

マクロ経済学(IS-LM分析)