ATProto Browser

ATProto Browser

Experimental browser for the Atmosphere

Post

Introducing dockitect: A new #rstats šŸ“¦ for programmatically creating and managing Dockerfiles 🐳 with pipe-friendly syntax! Quickly containerize your R projects with specialized templates for scripts, #rshiny apps, and more. šŸ“: blog.thecoatlessprofessor.com/programming/...

Mar 31, 2025, 10:04 AM

Record data

{
  "uri": "at://did:plc:fgeozid7uyx2lfz3yo7zvm3b/app.bsky.feed.post/3llo4aixhss2a",
  "cid": "bafyreie2gzryj3hr54zptu3s7524s4u4cywwmurexkq3wky7o7b4dqhszq",
  "value": {
    "text": "Introducing dockitect: A new #rstats šŸ“¦ for programmatically creating and managing Dockerfiles 🐳 with pipe-friendly syntax! \n\nQuickly containerize your R projects with specialized templates for scripts, #rshiny apps, and more. \n\nšŸ“: blog.thecoatlessprofessor.com/programming/...",
    "$type": "app.bsky.feed.post",
    "embed": {
      "$type": "app.bsky.embed.images",
      "images": [
        {
          "alt": "A hexagonal logo for \"dockitect\" with a blue border. Inside the hexagon is a grid background with five blue squares arranged in a pattern (three in the top row, two below). Various drafting tools are scattered throughout including a compass, triangle ruler, straight ruler, pencil, and eraser. The word \"dockitect\" appears at the bottom of the hexagon in blue font. ",
          "image": {
            "$type": "blob",
            "ref": {
              "$link": "bafkreie4x3lsshgxu5vh35txkof2tvzff2zgbasitku3b4bkoxi7zwli7y"
            },
            "mimeType": "image/jpeg",
            "size": 357892
          },
          "aspectRatio": {
            "width": 1152,
            "height": 1278
          }
        },
        {
          "alt": "Screenshot showing a complete workflow for containerizing a Shiny app. Left panel shows R code that:\n\nCreates a Dockerfile using dockitect's template for Shiny\nSets R version 4.4.0, port 3838, and app directory\n\nlibrary(dockitect)\ndk_template_shiny(\n  r_version = \"4.4.0\",\n  port = 3838,\n  app_dir = \"shiny_app/\"\n) |>\n  write_dockerfile()\n\nBuilds with:\n\ndocker build --platform linux/amd64 -t my-shiny-app .\n\nRuns with:\n\ndocker run -p 3838:3838 my-shiny-app\n\nRight panel shows the running Shiny app with \"Hello Docker!\" and a histogram of waiting times. Terminal displays Shiny server logs.",
          "image": {
            "$type": "blob",
            "ref": {
              "$link": "bafkreih76nnyxn7au7qnsxmf6w5z3lgv377c4txn425j53ghnh76xhcj3y"
            },
            "mimeType": "image/jpeg",
            "size": 900301
          },
          "aspectRatio": {
            "width": 2000,
            "height": 1231
          }
        },
        {
          "alt": "Screenshot of RStudio showing code for creating an interactive R environment with Docker. The code includes:\n\nGenerate a Dockerfile with specific packages including \"visualize\"\n\nlibrary(dockitect)\ndk_template_base(\n  r_version = \"4.4.3\",\n  additional_pkgs = c(\"visualize\")\n) |>\n  write_dockerfile()\n\nBuild the image with: \ndocker build -t r-interactive .\n\nRun interactively with: \ndocker run -it -v $(pwd):/app r-interactive R\n\nThe terminal shows R 4.4.3 running with its standard startup message, license information, and help commands.",
          "image": {
            "$type": "blob",
            "ref": {
              "$link": "bafkreied4xcjchmylo76ctzv7a6ns3kjnc775ycxa7oz7cqgo7ylotz7la"
            },
            "mimeType": "image/jpeg",
            "size": 813138
          },
          "aspectRatio": {
            "width": 2000,
            "height": 1455
          }
        },
        {
          "alt": "Screenshot of RStudio IDE showing code for generating a Dockerfile for data analysis using the dockitect package. The code demonstrates:\n\nGenerate the Dockerfile using \n\nlibrary(dockitect)\ndk_from_script(\"analysis.R\") |>\n  write_dockerfile()\n\nBuild the Docker image with:\n\ndocker build -t my-analysis .\n\nRun with volume mounting:\n\ndocker run -v $(pwd)/data:/app/data -v $(pwd)/results:/app/results my-analysis\n\nThe cell output shows successful execution with the message \"Dockerfile written to Dockerfile\". The terminal shows Docker build details and the results from automatically running the script including the mapped data output in the file panel.\n",
          "image": {
            "$type": "blob",
            "ref": {
              "$link": "bafkreidu7o2jzh3cn6baf2dtfl7mo3ooiudseap7h3hymbjotbwvwnfcsm"
            },
            "mimeType": "image/jpeg",
            "size": 805699
          },
          "aspectRatio": {
            "width": 2000,
            "height": 1418
          }
        }
      ]
    },
    "langs": [
      "en"
    ],
    "facets": [
      {
        "index": {
          "byteEnd": 36,
          "byteStart": 29
        },
        "features": [
          {
            "tag": "rstats",
            "$type": "app.bsky.richtext.facet#tag"
          }
        ]
      },
      {
        "index": {
          "byteEnd": 215,
          "byteStart": 208
        },
        "features": [
          {
            "tag": "rshiny",
            "$type": "app.bsky.richtext.facet#tag"
          }
        ]
      },
      {
        "index": {
          "byteEnd": 285,
          "byteStart": 240
        },
        "features": [
          {
            "uri": "https://blog.thecoatlessprofessor.com/programming/r/introducing-dockitect-making-docker-feel-more-native-to-r/",
            "$type": "app.bsky.richtext.facet#link"
          }
        ]
      }
    ],
    "createdAt": "2025-03-31T10:04:49.181Z"
  }
}