Shinyを使ってみる

ShinyはRのコードでウェブアプリケーションをつくることを可能にします。

インストール

dockerを活用します。

# cat compose.yaml
version: '3.1'

services:
  shiny:
    image: rocker/shiny-verse
    container_name: shiny
    restart: always
    ports:
      - 3838:3838
 docker pull rocker/shiny-verse
# docker compose up -d

Apacheの設定 (http://kiku3.tsbio.info/shiny/ に位置付け)

# cat /etc/httpd/conf.d/shiny.conf
<location /shiny>
        ProxyPass http://localhost:3838/
        ProxyPassReverse http://localhost:3838/
</location>
# systemctl restart httpd

動作確認

http://kiku3.tsbio.info/shiny/01_hello/ を開く(最後のスラッシュが重要)。

設定

コンテナの様子を探る。

# docker exec -it shiny bash
# cat /etc/shiny-server/shiny-server.conf
# Instruct Shiny Server to run applications as the user "shiny"
run_as shiny;

# Define a server that listens on port 3838
server {
  listen 3838;

  # Define a location at the base URL
  location / {

    # Host the directory of Shiny Apps stored in this directory
    site_dir /srv/shiny-server;

    # Log all Shiny output to files in this directory
    log_dir /var/log/shiny-server;

    # When a user visits the base URL rather than a particular application,
    # an index of the applications available in this directory will be shown.
    directory_index on;
  }
}

Rのコードを置く場所をコンテナの外にする。

# docker cp shiny:/srv/shiny-server shiny/apps
# docker compose down

compose.yamlを修正して、コンテナを作成しなおす。

# cat compose.yaml
version: '3.1'

services:
  shiny:
    image: rocker/shiny-verse
    container_name: shiny
    restart: always
    ports:
      - 3838:3838
    volumes:
      - ./shiny/apps:/srv/shiny-server
# docker compose up -d

shiny/apps/01_hello/app.Rを少しいじって、ウェブページが変わることを確認。

プログラム開発

01_helloを丸ごとpikminにコピーして、app.RとReadme.mdをいじる。
https://kiku3.tsbio.info/shiny/pikmin/