Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新(準備中)

Aug 12, 2025

one-off-docker-runner volume host bindアップデート

以前の記事 で紹介した one-off-docker-runner に、volumes の「host bind」機能が追加・改善されました。本記事では、Run API の正確な JSON リクエスト形式、各パラメータの意味、注意点をまとめます。この記事だけでコピペ再現できます。

できること(概要)

ホスト上の既存ファイルやディレクトリを、コンテナ内の任意のパスに bind mount できます。これにより、

  • 実行前にホスト側で用意した入力(設定、データ)をコンテナへ渡す
  • 実行後にコンテナ側で生成された成果物をホスト側でそのまま参照する といったワークフローがシンプルに実現できます。

volumes キーの基本

  • キー(左側)は「コンテナ側のマウントパス」とオプションのアクセス修飾子で構成します。
    • 形式: <container_path>[:ro|:rw]
    • 例: /app/data, /etc/config:ro
    • 省略時は rw(読み書き)
  • 値(右側)は VolumeConfig オブジェクトで、type により意味が変わります。
    • file | directory | volume | host
  • 今回の主題である type = "host" では、以下がポイントです(README 準拠)。
    • 必須: host_path(ホスト上の絶対パス)
    • 禁止: responsetrue 指定はサポート外で拒否されます)

README の該当要点:

  • bind source は type=host の場合、host_path に与えた「ホスト上の絶対パス」
  • type=host では response はサポートされず、指定するとエラーとして拒否されます

最小リクエスト例(host のファイル + ディレクトリ)

以下はホスト上の host.txt とディレクトリをコンテナにマウントし、中身を確認する最小例です。

May 22, 2025 - 日記

dotenvxで環境変数管理をもっと快適に

環境変数管理ツール「dotenvx」を最近プロジェクトで導入したので、基本機能や使い方、他ツールとの違い、実際の活用シナリオなどをまとめてみます。普段は python-dotenvdirenv などを使ってきましたが、dotenvxはCLIの使い勝手やCI/CDとの親和性が高く、個人的にかなり気に入っています。

May 8, 2025 - 日記

gitcache:大規模リポジトリの操作を高速化するローカルキャッシュツール

大規模なGitリポジトリを扱う場合や、同じリポジトリの複数のクローンを作成する場合、ネットワーク帯域幅とディスク容量の消費が問題になることがあります。今回は、これらの問題を解決するための便利なツール「gitcache」を紹介します。

gitcacheとは

gitcache は、Gitリポジトリのローカルキャッシュを提供するツールです。大規模なリポジトリや複数のクローンを扱う際のパフォーマンスを向上させることを目的としています。

基本的な考え方は、ローカルにベアミラーを作成し、必要に応じて更新して、それを複数のローカルリポジトリのソースとして使用するというものです。

May 5, 2025 - 日記

Dockerコンテナからホスト上のコマンドを実行する

nsenterコマンドを使ってDockerコンテナからホスト上のコマンドを実行する方法について紹介します。

nsenter を使ってホストのネームスペースに入る

コンテナを特権モードかつホストの PID ネームスペース共有で起動し、nsenter を用いるとホストのルートプロセス(PID 1)のネームスペース内でコマンドを実行できます。

docker run -it --rm \
  --privileged \
  --pid host \
  debian:stable-slim \
  nsenter -t 1 -m -u -n -i bash

nsenter コマンドは、既存のプロセスが属する名前空間(namespace)内で指定したプログラムを実行するためのコマンドです。オプションで指定したPIDのプロセスが持つマウント、UTS、IPC、ネットワーク、PID、ユーザー、cgroup、timeなどの名前空間に入ります。プログラムを指定しない場合はデフォルトで${SHELL}(通常は/bin/sh)が実行されます。

Mar 13, 2025 - 日記

Cursorと Grafana LokiをMCPで繋いで開発体験を向上させる

ソフトウェア開発において、効率的なデバッグとトラブルシューティングは生産性に大きく影響します。特に複雑なアプリケーションを開発する際、ログの管理と分析は重要な要素となります。

この記事では、以下のツールを組み合わせて、ローカル開発環境でのログ管理と問題解決を効率化する方法を紹介します:

over all of grafana loki mcp cursor

  1. local-logs - ローカル環境に簡単にGrafana Lokiスタックを構築するツール
  2. grafana-loki-mcp - CursorのMCP(Model Control Protocol)にGrafana Lokiを統合するプラグイン
  3. Cursor - AIを活用したコーディング支援IDE

これらを組み合わせることで、開発中のアプリケーションのログをリアルタイムで収集・分析し、CursorのAIエージェントがログデータを基に問題解決を支援する環境を構築できます。

Jan 10, 2025 - 日記

MacOSのHostName3つある

奇妙なことにMacOSには3種類のホスト名が存在します。それぞれ役割や設定方法が異なるため、混乱することもあるでしょう。 このブログでは、MacOSにおける3種類のホスト名の違いと設定方法、そして hostname コマンドによる一時的な変更手順について解説します。

結論: ホスト名を変更するときには HostNameComputerNameLocalHostNameすべて変更しましょう。

Jan 9, 2025 - 日記

AIによるスペックテストの変更をガードする方法

テスト駆動開発(TDD)では、顧客の分析された顧客の要求仕様をテストケースとして初期段階に完成させますが、 開発者やAIがこのテストケースを変更してしまってはTDDの意味がありません。

本稿では、Pythonの pytest を使ってテストを書いている中で、顧客レビュー済みの**スペックテスト(仕様テスト)**を開発者が変更してしまうのを防ぐためのアイデアをご紹介いたします。

Jan 7, 2025 - 日記

PgBouncerの高可用性構成(HA)

PostgreSQL環境でPgBouncer を高可用性構成で実装する際の考え方を解説します。バックエンドのPostgreSQL自体のHA構成は考慮せず、あくまでPgBouncer側のみを高可用性化する方法を簡単な構成例とあわせて解説します。

Jan 6, 2025 - 日記

GitHub Actionsでcronを実行する

GitHub Actionsは、リポジトリのコードを基盤にCI/CDタスクを自動化するための強力なツールです。その中でも cron スケジュールを利用することで、特定のタイミングで定期的にジョブを実行できます。本記事では、GitHub Actionsを使ってcronタスクを設定する方法、利点と欠点、さらに具体的な利用例について解説します。