#author("2020-07-22T09:28:43+00:00","default:sysosa","sysosa") 本家様 [[https://github.com/arohou/gP2S]] #author("2020-07-22T09:29:08+00:00","default:sysosa","sysosa") 本家様 [[https://github.com/arohou/gP2S>+https://github.com/arohou/gP2S]] cryo-EM向けの電子実験ノート. 作ったグリッドとかサンプルとかを記録していきます. あと作ったグリッドの保存場所とかも記録していきます. 研究リソースの管理にはいいかもしれません. 実験プロトコルも登録できて、トレースが楽かもしれません. アプリとしてもdockerでも運用できるみたい. フロントエンドはVue.jsで、バックエンドは SPRING によるjavaサーブレットかな? ユーザアカウント管理[[gP2S/account]] 試しにデータを入力してみた[[gP2S/sample]] ***dokcer版を作ってみる [#bfccf922] dokcer環境の構築はこちらを参照 [[docker]] まずはgitを取得する #code(nonumber){{ [illya@docker ~]$ git clone https://github.com/arohou/gP2S }} 使用するのは gP2S/docker-compose.yml だけなのですが、、、 構築方法はこの docker-compose.yml ファイルにも書かれているが、 #code(nonumber){{ [illya@docker ~]$ head -n 10 gP2S/docker-compose.yml # Start. # docker swarm init # docker stack deploy -c docker-compose.yml gp2s_stack # docker service ls # # Stop and remove services along with database volumes. # docker stack rm gp2s_stack # docker swarm leave --force # version: "3" [illya@docker ~]$ }} っと、「&color(magenta){docker swarm init};」「&color(magenta){docker stack deploy -c docker-compose.yml gp2s_stack};」でいいみたい. どうやらdockerのswarmモードで構築するようで. &color(red){*};&size(10){(dockerでクラスターを作るモードです)}; #code(nonumber){{ [illya@docker ~]$ docker swarm init Swarm initialized: current node (略) is now a manager. To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-3wplhs8(略) 192.168.0.96:2377 <--- workerになる際に使用するコマンド To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. [illya@docker ~]$ }} これ以降「docker swarm join ...」とか実行するのかなと思うのだが、「docker-compose.yml」によると次は「&color(magenta){docker stack deploy -c docker-compose.yml gp2s_stack};」でいいみたい. なので #code(nonumber){{ [illya@docker ~]$ docker stack deploy -c gP2S/docker-compose.yml gp2s_stack Ignoring deprecated options: container_name: Setting the container name is not supported. Creating network gp2s_stack_gp2snet Creating service gp2s_stack_apacheds Creating service gp2s_stack_gp2s-service Creating service gp2s_stack_mysql Creating service gp2s_stack_mongodb [illya@docker ~]$ (確認) [illya@docker ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS z7zvk3uufg8q gp2s_stack_apacheds replicated 1/1 openmicroscopy/apacheds:0.7.0 *:10389->10389/tcp iklprg83ukck gp2s_stack_gp2s-service replicated 1/1 arohou/gp2s:latest *:8080->8080/tcp x61uxqjru2tq gp2s_stack_mongodb replicated 1/1 mongo:4.0.6 *:27017->27017/tcp n75nuv70by9s gp2s_stack_mysql replicated 1/1 mysql:5.7 *:3306->3306/tcp [illya@docker ~]$ }} これでgP2Sは動く. ***アクセスする [#yefcfc30] gP2Sはwebアプリ. dockerを動かした計算機の 8080 にブラウザでアクセスします すると下記のような画面が表示される. &ref(2020y05m12d_093944652.png,nolink); 初期アカウントは「admin」初期パスワードは「secret」です. ログインするとこんな感じ &ref(2020y05m12d_094315492.png,nolink); ***停止 [#sf0a2986] #code(nonumber){{ (稼働の確認) [illya@docker ~]$ docker service ls ID NAME MODE REPLICAS IMAGE PORTS yezgox9iw0nh gp2s_stack_apacheds replicated 1/1 openmicroscopy/apacheds:0.7.0 *:10389->10389/tcp p1hzkz4batr6 gp2s_stack_gp2s-service replicated 1/1 arohou/gp2s:latest *:8080->8080/tcp j1dvgx3e9cw7 gp2s_stack_mongodb replicated 1/1 mongo:4.0.6 *:27017->27017/tcp dy84hj47yu0t gp2s_stack_mysql replicated 1/1 mysql:5.7 *:3306->3306/tcp (停止) [illya@docker ~]$ docker stack rm gp2s_stack }} これでサービスが停止します。 この後、「docker-compose.yml」のパラメータを調整して再度起動するには下記を実行します #code(nonumber){{ [illya@docker ~]$ docker stack deploy -c gP2S/docker-compose.yml gp2s_stack }} ***運用 [#p4c70785] gP2Sのサイトにも書かれているが、そのまま稼働してデータを書き込んでもマシンを再起動すればそのデータは消えてしまいます。 &color(red){*};具体的には「docker stack rm gp2s_stack」でサービスを停止すれば消えます 永続的にデータを残すには「docker-compose.yml」を調整する必要があります。 #code(diff,nonumber){{ diff --git a/docker-compose.yml b/docker-compose.yml index 6fb19fd..d4fd2cd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -22,8 +22,8 @@ services: networks: - gp2snet #Uncomment below two lines to have mysql data persisent - #volumes: - # - mysql_volume:/var/lib/mysql + volumes: + - mysql_volume:/var/lib/mysql mongodb: container_name: gp2s_mongodb image: mongo:4.0.6 @@ -35,8 +35,8 @@ services: networks: - gp2snet #Uncomment below two lines to have mysql data persisent - #volumes: - # - mongo_volume:/data/db + volumes: + - mongo_volume:/data/db apacheds: container_name: gp2s_apacheds image: openmicroscopy/apacheds:0.7.0 @@ -74,6 +74,6 @@ networks: gp2snet: #Uncomment below lines to have mysql and mongodb data persisent -#volumes: - #mongo_volume: - #mysql_volume: +volumes: + mongo_volume: + mysql_volume: }} これで「docker stack deploy -c gP2S/docker-compose.yml gp2s_stack」と再起動させると volume が勝手に作成されます。 #code(nonumber){{ [illya@docker ~]$ docker volume ls DRIVER VOLUME NAME local 4fe641b83e791eaeb3d3f1387c3cd6055595ccdc438de417b61542e9f9c1002b local ab450e1256ec03f2daf69a6f873bf18795fa0ab20980c20419afd9d7c256f9c8 local cbf7052d592bc0a393efd25ae8a1af492264dab7a870e3141e666ffe3a786a8d local gp2s_stack_mongo_volume <--- これと local gp2s_stack_mysql_volume <--- これ [illya@docker ~]$ }} これらは「docker stack rm gp2s_stack」としても、再起動しても削除されないので最低限ここは有効にすべきかと. ***日本語入力 [#w44ecfb8] 既定のままでは無理. エラーが発生します. mysqlの所で「command」行を追加すれば回避できます. &color(red){*};&size(10){TZ環境変数はおまけ}; #code(diff,nonumber){{ diff --git a/docker-compose.yml b/docker-compose.yml index 6fb19fd..865587b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -12,6 +12,7 @@ services: mysql: container_name: gp2s_mysql image: mysql:5.7 + command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci ports: - 3306:3306 environment: @@ -19,6 +20,7 @@ services: MYSQL_USER: gp2s_user MYSQL_PASSWORD: password MYSQL_DATABASE: gp2sdb + TZ: "Asia/Tokyo" networks: - gp2snet #Uncomment below two lines to have mysql data persisent }}