勝手に空いてるポートでやってほしい

docker-compose:

version: '2'
services:
  web:
    build: .
    ports:
      - $PORT:3000

こういうのがあった時に、どこが空いてるか考えて PORT=3033 docker-compose up とするのが面倒。 かといってハードコードしてしまったら被った時にさらに面倒。なので勝手に空いてるところでやってほしい。

randport:

#!/usr/bin/env ruby

require 'socket'

s = TCPServer.open(0)
port = s.addr[1]
s.close
STDOUT.puts "randport: PORT=#{port}"
exec("PORT=#{port} #{ARGV.join(' ')}")

これで楽

$ randport docker-compose up
randport: PORT=53450
...

追記

とても間抜けなことをやっていたことに気付き、赤面。

とても楽。とても良い