LoginSignup
3
5

More than 3 years have passed since last update.

Pleasanter NetCore をDockerで上げる

Posted at

はじめに

国産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 番ポートで開けます。

image.png

簡単😋

解説

ちょっと備忘録的に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が発生しますが、手元で動かしている分には普通に動いているようです。
(コメントの画像投稿機能は除く)

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5