以前の記事
で紹介した 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
(ホスト上の絶対パス) - 禁止:
response
(true
指定はサポート外で拒否されます)
README の該当要点:
- bind source は
type=host
の場合、host_path
に与えた「ホスト上の絶対パス」 type=host
では response
はサポートされず、指定するとエラーとして拒否されます
最小リクエスト例(host のファイル + ディレクトリ)
以下はホスト上の host.txt
とディレクトリをコンテナにマウントし、中身を確認する最小例です。
環境変数管理ツール「dotenvx」を最近プロジェクトで導入したので、基本機能や使い方、他ツールとの違い、実際の活用シナリオなどをまとめてみます。普段は python-dotenv
や direnv
などを使ってきましたが、dotenvxはCLIの使い勝手やCI/CDとの親和性が高く、個人的にかなり気に入っています。
Denoを使えばTypeScriptを簡単に実行することができます。
Denoでは、以下のようなTypeScriptスクリプトを直接実行できます。
大規模なGitリポジトリを扱う場合や、同じリポジトリの複数のクローンを作成する場合、ネットワーク帯域幅とディスク容量の消費が問題になることがあります。今回は、これらの問題を解決するための便利なツール「gitcache」を紹介します。
gitcacheとは
gitcache
は、Gitリポジトリのローカルキャッシュを提供するツールです。大規模なリポジトリや複数のクローンを扱う際のパフォーマンスを向上させることを目的としています。
基本的な考え方は、ローカルにベアミラーを作成し、必要に応じて更新して、それを複数のローカルリポジトリのソースとして使用するというものです。
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)が実行されます。
ソフトウェア開発において、効率的なデバッグとトラブルシューティングは生産性に大きく影響します。特に複雑なアプリケーションを開発する際、ログの管理と分析は重要な要素となります。
この記事では、以下のツールを組み合わせて、ローカル開発環境でのログ管理と問題解決を効率化する方法を紹介します:

- local-logs
- ローカル環境に簡単にGrafana Lokiスタックを構築するツール
- grafana-loki-mcp
- CursorのMCP(Model Control Protocol)にGrafana Lokiを統合するプラグイン
- Cursor
- AIを活用したコーディング支援IDE
これらを組み合わせることで、開発中のアプリケーションのログをリアルタイムで収集・分析し、CursorのAIエージェントがログデータを基に問題解決を支援する環境を構築できます。
奇妙なことにMacOSには3種類のホスト名が存在します。それぞれ役割や設定方法が異なるため、混乱することもあるでしょう。
このブログでは、MacOSにおける3種類のホスト名の違いと設定方法、そして hostname
コマンドによる一時的な変更手順について解説します。
結論: ホスト名を変更するときには HostName
・ ComputerName
・ LocalHostName
をすべて変更しましょう。
テスト駆動開発(TDD)では、顧客の分析された顧客の要求仕様をテストケースとして初期段階に完成させますが、
開発者やAIがこのテストケースを変更してしまってはTDDの意味がありません。
本稿では、Pythonの pytest
を使ってテストを書いている中で、顧客レビュー済みの**スペックテスト(仕様テスト)**を開発者が変更してしまうのを防ぐためのアイデアをご紹介いたします。
PostgreSQL環境でPgBouncer
を高可用性構成で実装する際の考え方を解説します。バックエンドのPostgreSQL自体のHA構成は考慮せず、あくまでPgBouncer側のみを高可用性化する方法を簡単な構成例とあわせて解説します。
GitHub Actionsは、リポジトリのコードを基盤にCI/CDタスクを自動化するための強力なツールです。その中でも cron
スケジュールを利用することで、特定のタイミングで定期的にジョブを実行できます。本記事では、GitHub Actionsを使ってcronタスクを設定する方法、利点と欠点、さらに具体的な利用例について解説します。