はじめに
国産OSSとして有名なPleasanterですが、前々から興味があったので、試してみました。
が、セットアップ手順がとても難しく、
簡単に立ち上げられて簡単に壊せる環境が作りたかったので docker-compose で上がるようにしてみました。
なお、本記事は私が学習目的で実施した内容で、Pleasanter公式の手順ではない旨ご了承ください。
あと、コメントなどの画像投稿機能が動いていません(ファイルアップロードは動く)。そこら辺分かり次第修正します。
実施環境
Windows 10 64bit 上の docker(WSL2) と、
Ubuntu 18.04 64bit 上の docker で動作することを確認しました。
コード
ここに上げてます。
手順
下記手順は上記ブランチをチェックアウトしてから行うのを前提とします。
git clone https://github.com/yoh1496/Implem.Pleasanter.NetCore.git
cd Implem.Pleasanter.NetCore
git checkout feature/docker
起動
下記コマンドでバックグラウンドに起動できます。
docker-compose up -d
セットアップ
Pleasanterのドキュメントにある CodeDefiner コマンドは下記コマンドで代替できます。
docker-compose exec pleasanter dotnet Implem.CodeDefiner.NetCore.dll <args>
ブラウザで開く
デフォルトでは 5001
番ポートで開けます。
簡単😋
解説
ちょっと備忘録的にDockerfileを書くにあたり検討した内容を記載します。
マルチステージビルド
# 冒頭
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS base
FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
# 末尾
FROM build AS publish
RUN dotnet publish "Implem.Pleasanter.NetCore.sln" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
今回はこんな感じで「マルチステージビルド」というものをしています。
こうすることで、出来上がるイメージには SDK が含まれず軽いイメージができあがります。
設定ファイルの分離
volumes:
- ./Implem.Pleasanter/App_Data/:/app/App_Data/
docker-compose.yml
内で上記のように App_Data を外出しできるようにしています。「とりあえず」でやってしまったので今後要検証です。
永続化?
Pleasanterのデータ保持がどのようになされているのか、まだ理解しきれていないので特に手はつけていません。
postgreSQL を別コンテナに
App_Data のところ ConnectionString が localhost でベタ書きされていたので、postgres
でベタ書きしました(よくない)
{
// 略
"SaConnectionString": "Server=postgres;Database=postgres;UID=postgres;PWD=SetSaPWD",
"OwnerConnectionString": "Server=postgres;Database=#ServiceName#;UID=#ServiceName#_Owner;PWD=SetAdminsPWD",
"UserConnectionString": "Server=postgres;Database=#ServiceName#;UID=#ServiceName#_User;PWD=SetUsersPWD",
// 略
}
大文字小文字問題
あまり意図がわかっていなくて恐縮ですが、
-
wwwroot/images
フォルダにHayato*.png
と、hayato*.png
というファイル -
dotnet publish
では それらは同一ファイルとしてみなされ 小文字のhayato*.png がコピーされない - トップページでは hayato.png を参照*する
というコンボで404が発生してしまったため Hayato*.png を消しています。
終わりに
.Net Framework 依存のコードが Implem.Pleasanter 内にあるため、
ビルド時に大量にWarningが発生しますが、手元で動かしている分には普通に動いているようです。
(コメントの画像投稿機能は除く)