Docker Composeでビルド時に任意のイメージ名を指定する方法
公式リファレンスを見ても分かりづらいのでメモ.
Docker Compose経由でビルドされたデフォルトイメージ名は {プロジェクト名}_{サービス名}
となる (デフォルトプロジェクト名はディレクトリ名だが, コマンドラインオプション -p
から指定可能). 例えば以下のような構成であれば, イメージ名が hoge_fuga
, コンテナ名が piyo
となる.
hoge ┣ Dockerfile ┣ docker-compose.yml ┗ ...
# docker-compose.yml version: '2' services: fuga: build: . container_name: piyo
しばしば長ったらしいイメージ名になってしまう. そこで以下のように image
を追加することでイメージ名を指定できる. image
と build
が同時に宣言されている場合は, ビルドが優先的に実行されて, image
はその構成に使われる (image
によるプルは発生しない).
結果としてイメージ名が nyan
, コンテナ名が piyo
となる. ちなみにタグの付与も image
からできる. これらは全て, Compose File v2からの機能である.
# docker-compose.yml version: '2' services: fuga: build: . image: nyan container_name: piyo
既存環境に手を加えずにサクッとHTTPS化する (NAT配下でもok)
MP4をストリームで扱う場合の落とし穴
MP4コンテナの仕様上, ストリームとして読み込ませるとうまく扱えない.
cat video.mp4 | ffmpeg -i pipe:0 ...
といった形で扱うと Error while decoding stream #0:1: Invalid data found when processing input
として怒られてしまう. 素直に別コンテナを使うか, ファイルとして扱う (ffmpeg -i video.mp4 ...
) 必要があるようだ. -analyzeduration
や -probesize
も試したが, ストリームの場合は意味がない模様. ちなみに出力の際 (ffmpeg ... pipe:1
) はそのままストリーミング再生しても問題ないようだった.
chinachu弄ってたらめちゃ嵌った.
Chinachu γ, Mirakurun and Encoder on Docker
タイトル通り. 過去にも似たようなことをやったり, 公式実装が公開されたり と, これらを使ってきたが, やはりどうにも使い勝手が悪い部分が多かったので作り直した (宿命).
基本的には公式実装をベースとしているが, 破壊的な変更や機能追加が多いため別リポジトリとした. 細かい内容はリポジトリを見て頂きたいが, 主な特徴だけ挙げる.
- アプリケーション群は完全にDocker管理下でビルド済みイメージも公開済み[1][2] で
docker-compose up
するだけ. 設定ファイルは別途永続化されるので, 止めたい時は気軽にdocker-compose down
可能 - Mirakurun, Chinachuだけでなく自動エンコード機能もデフォルト内蔵で個別設定も可能, もちろんChinachuのストリーミング再生機能もそのまま利用可能
- 最低限レベルの初期設定
- 出来る限りセキュアな構成 (
一部調整中非特権コンテナ化実装済)
録画ファイルは自動的にエンコード済みのものと置き換えられるので, 例えば エンコードしたファイルをスマートフォンなどに保存したい。 · Issue #202 · Chinachu/Chinachu · GitHub とかも自動的に解決される.
🏆 快適な録画環境で優勝 🏆