新しいアプリケーションをShinyProxyに追加する最速の方法
14701 ワード
byPeter Solymos
一旦あなたのShinyProxyサーバーが稼働しているならば、あなたはそれを維持して、更新する必要があります.前回は、既存のアプリを更新する方法を見た.このセクションでは、新しいものを手間がかからないようにする方法を説明します.
ShinyProxyは、コンシャスユーザーまたはアプリケーションの時間の数を制限することなく、光沢のあるアプリのようなコンテナ化されたWebアプリケーションを提供します.それは無料、オープンソースであり、認証やアプリケーションレベルの認証などの無料のエンタープライズ機能が付属しています.
前の記事ではintroduced ShinyProxy とconfiguration , 次にupdate existing apps ユーザーを混乱させることなく.しかし、たまに、ShinyProxyに新しいアプリケーションを追加します.これは、設定を更新し、いくつかの手順を実行する必要があります.これらのステップとどのようにプロセスをより効率的にするかを見てみましょう.
設定ファイルを見つけることができます
フォローするには、以下の仮想マシンを設定しますthis post Ubuntu 20.04を使用して任意のクラウドプロバイダ.または、ShinyProxy 1-click app from the Digitalocean Marketplace :
ShinyProxy Marketplaceイメージを使っている液滴(仮想マシン)をつくってください
ホストURLまたはIPv 4アドレスを知ったら、
ShinyProxyの設定は 更新 新しいDockerイメージをホストに引き寄せてください ShinyProxyサービスを再起動します 手順2と3はサーバー上で起こります.しかし、ステップ1はいくつかの異なる方法で達成することができます.それらが何であるかについて見ましょう.
最も簡単な方法は、サーバー上で直接YAMLファイルを編集することです.ファイルをオープンする
新しいDocker画像をプルします.
これは、サーバー上のログインしているユーザのいずれかに起こるでしょう.そのような混乱を避けるために、ユーザーがログインしていないとき、または、中断が最小で、事前にユーザーに広告されるとき、あなたは時間へのアップデートを予定することができます.また、使用することができますRedis in-memory database for session persistence .
ここで説明するアプローチは、ShinyProxyの設定を完全に機能させる方法です.しかし、一旦ファイルが変わるならば、あなたがどこかでバックアップコピーを保存しない限り、それは難しくなります.これは、バージョン管理を使用するのが役に立つかもしれない理由です.
エディット
私は前のものと同様にワークフローを説明するつもりです、しかし、変化を引く代わりに、私は使用するつもりです
エディット
スクリプトは、次の順序で処理を行います. 更新されたYAMLをサーバにコピーします YAMLファイルに記載されているDocker画像をプルします ShinyProxyサービスを再開する これは、Gitリポジトリ内の実際のYAMLファイルのコマンドです.
更新後に2つの新しい画像をリスティング
あなたがもうそれを必要としない場合、サーバーをシャットダウンすることを忘れないでください.
ShinyProxyを更新する3つの方法をレビューしました.第3のスクリプトベースの更新
ShinyProxy documentation: configuration
Managing access tokens on Docker Hub
ShinyProxy 1-click app
Session persistence with Redis
一旦あなたのShinyProxyサーバーが稼働しているならば、あなたはそれを維持して、更新する必要があります.前回は、既存のアプリを更新する方法を見た.このセクションでは、新しいものを手間がかからないようにする方法を説明します.
ShinyProxyは、コンシャスユーザーまたはアプリケーションの時間の数を制限することなく、光沢のあるアプリのようなコンテナ化されたWebアプリケーションを提供します.それは無料、オープンソースであり、認証やアプリケーションレベルの認証などの無料のエンタープライズ機能が付属しています.
前の記事ではintroduced ShinyProxy とconfiguration , 次にupdate existing apps ユーザーを混乱させることなく.しかし、たまに、ShinyProxyに新しいアプリケーションを追加します.これは、設定を更新し、いくつかの手順を実行する必要があります.これらのステップとどのようにプロセスをより効率的にするかを見てみましょう.
必要条件
設定ファイルを見つけることができます
application.yml
このチュートリアルではanalythium/shiny-correlation githubリポジトリ.フォローするには、以下の仮想マシンを設定しますthis post Ubuntu 20.04を使用して任意のクラウドプロバイダ.または、ShinyProxy 1-click app from the Digitalocean Marketplace :
ShinyProxy Marketplaceイメージを使っている液滴(仮想マシン)をつくってください
ホストURLまたはIPv 4アドレスを知ったら、
$HOST
環境変数とrootユーザとしてログインするssh
:export HOST="178.128.235.125"
ssh root@$HOST
新しいアプリを追加する手順
ShinyProxyの設定は
application.yml
ファイル名/etc/shinyproxy
フォルダ.このファイルはアプリをリストします、したがって、新しいアプリケーションを加えることは以下のステップを含みますapplication.yml
新しいアプリを含めるdocker pull
service shinyproxy restart
サーバーで設定を編集
最も簡単な方法は、サーバー上で直接YAMLファイルを編集することです.ファイルをオープンする
nano
or vim
, 不要なアプリケーションを削除する/etc/shinyproxy/application.yml
), そして、新しいアプリを追加します.ファイナルショーapplication.yml
参照用のファイルproxy:
title: Shiny Proxy
logo-url: https://hub.analythium.io/assets/logo/logo.png
landing-page: /
favicon-path: favicon.ico
heartbeat-rate: 10000
heartbeat-timeout: 60000
port: 8080
authentication: simple
admin-groups: admins
users:
- name: admin
password: password
groups: admins
- name: user
password: password
groups: users
docker:
url: http://localhost:2375
port-range-start: 20000
specs:
- id: cor2d
display-name: Correlation in 2D
description: App with 2D kernel density estimate
container-cmd: ["R", "-e", "shiny::runApp('/home/app')"]
container-image: analythium/correlation:v1
logo-url: https://hub.analythium.io/assets/apps/cor2d.png
access-groups: []
- id: cor3d
display-name: Correlation in 3D
description: App with kernel density estimate with 3D RGL plot
container-cmd: ["R", "-e", "shiny::runApp('/home/app')"]
container-image: analythium/correlation:v2
logo-url: https://hub.analythium.io/assets/apps/cor3d.png
access-groups: [admins, users]
logging:
file:
name: shinyproxy.log
つの新しいアプリはどのように議論するときに見たものと同じですupdate existing apps . The access-groups: []
値は、すべての認証ユーザーがアプリケーションの2 Dバージョンにアクセスできることを意味します.新しいDocker画像をプルします.
docker pull analythium/correlation:v1
docker pull analythium/correlation:v2
あなたが個人のDockerレジストリを使用しているならば、あなたはログインしなければなりません.制限されたスコープを持つトークンを生成するのが最善です.あなたのパスワードの代わりにこのトークンを使用することができますし、それを使用しているすべての場所でパスワードを変更することなく、いつでもトークンを取り消すのは簡単です.これは、ワンタイムのことは、ユーザー名とトークンが保存され、後でログインが必要です使用されます.トークンをファイルに保存します(この行の先頭にあるダブルスペースは、Bash履歴でトークンが終了するのを防ぎます). echo your_token > ./token.txt
今、あなたは標準入力を介してトークンを渡すことができますusername
and registryname
:cat ./token.txt | docker login --username username --password-stdin registryname
最後に、ShinyProxyを再起動します.service shinyproxy restart
あなたがShinyProxyサーバーにログインしたならば、現在、あなたはShinyProxyが再開するまで、502の悪いゲートウェイを見なければなりません.これは、サーバー上のログインしているユーザのいずれかに起こるでしょう.そのような混乱を避けるために、ユーザーがログインしていないとき、または、中断が最小で、事前にユーザーに広告されるとき、あなたは時間へのアップデートを予定することができます.また、使用することができますRedis in-memory database for session persistence .
ここで説明するアプローチは、ShinyProxyの設定を完全に機能させる方法です.しかし、一旦ファイルが変わるならば、あなたがどこかでバックアップコピーを保存しない限り、それは難しくなります.これは、バージョン管理を使用するのが役に立つかもしれない理由です.
Gitを編集して設定を更新します
エディット
application.yml
ローカルマシンとGitでリモートリポジトリに変更をプッシュします.最初にサーバー上の設定を更新すると、Gitはバージョン管理下にあるプロジェクトをクローンします.git clone https://github.com/analythium/shiny-correlation.git
次は、あなただけのcd
ディレクトリとgit pull
変更点:cd shiny-correlation
git pull
YAML設定ファイルを/etc/shinyproxy
フォルダcp application.yml /etc/shinyproxy
新しいイメージをプルし、前の節のようにShinyProxyを再起動します.docker pull analythium/correlation:v1
docker pull analythium/correlation:v2
service shinyproxy restart
このアプローチは以前のバージョン管理の問題を取り囲んでいます.しかし、1つずつ新しいイメージ名を入力すると退屈です.いくつかの効率を見つけることができるかどうか見てみましょう.SSHの設定変更をプッシュする
私は前のものと同様にワークフローを説明するつもりです、しかし、変化を引く代わりに、私は使用するつもりです
ssh
and scp
ファイルをサーバーに転送し、Docker引きとShinyProxy再起動コマンドを実行します.エディット
application.yml
そして、完全な履歴があるように変更をコミットします.一度あなたのapplication.yml
準備完了.cd
設定ファイルがあるローカルディレクトリに次のようにダウンロードしますscript file :curl -s https://raw.githubusercontent.com/analythium/shinyproxy-1-click/master/digitalocean/setup.sh -o setup.sh
新しくダウンロードされた一般的な使用法setup.sh
はbash setup.sh -i ~/.ssh/id_rsa -s root@ip_address -f application.yml
以下のコマンドライン引数をsetup.sh
スクリプト-i
: あなたのパスssh
キー-s
: ユーザ名root\
) IPアドレスなど.[email protected]
-f
: ShinyProxy設定のパスとファイル名./path/to/application-new.yml
. /etc/shinyproxy
フォルダbash setup.sh -i ~/.ssh/id_rsa -s root@${HOST} -f application.yml
出力は次のようになります.[INFO] Copying application.yml to host
[INFO] Updating docker images according to application.yaml
v1: Pulling from analythium/correlation
420047682034: Pulling fs layer
...
7bdb658c82cf: Pull complete
Digest: sha256:175663b0be8c97743f7a5bd1960c59d3f09536cd762a0f6f0a5744ee55ddb7ce
Status: Downloaded newer image for analythium/correlation:v1
docker.io/analythium/correlation:v1
v2: Pulling from analythium/correlation
420047682034: Already exists
...
b65c57a60c68: Pull complete
Digest: sha256:4eaa98afe32b88d4cce7ce5436956ecb38e94c776bee97244a8fc28cde8e415f
Status: Downloaded newer image for analythium/correlation:v2
docker.io/analythium/correlation:v2
[INFO] Restarting ShinyProxy
[INFO] Done
スクリプトはYAML設定を解析し、container-image
エントリー.これはバックグラウンドで以下のスクリプトで行います.#!/bin/bash
db=$(grep 'container-image:' $1 | sed 's/[^:]*://' | sed 's/^[[:space:]]*//g')
while IFS= read -r line; do docker pull $line; done <<< "$db"
あなたのShinyProxyサーバーをチェックすると、2つの新しいアプリケーションが表示されます:更新後に2つの新しい画像をリスティング
あなたがもうそれを必要としない場合、サーバーをシャットダウンすることを忘れないでください.
結論
ShinyProxyを更新する3つの方法をレビューしました.第3のスクリプトベースの更新
application.yml
すべてのコマンドラインツールが便利であれば、ファイルは非常に効率的です.変更はバージョン管理されることができます、そして、あなたはホストマシンの上でファイルとディレクトリをナビゲートすることなく更新されたShinyProxyサーバーから1行離れています.スクリプトは、引っ張られる必要があるすべてのDockerイメージのためにYAMLファイルさえスキャンします.覚えている唯一のことは、ユーザーに最小限の混乱を引き起こすときに、これらの更新を実行することです.更なる読書
Reference
この問題について(新しいアプリケーションをShinyProxyに追加する最速の方法), 我々は、より多くの情報をここで見つけました https://dev.to/analythium/the-quickest-way-to-add-new-apps-to-shinyproxy-4lkiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol