Docker:使用精确的端口号匹配自动发布端口
我在我的Dockerfile
有这个行:
EXPOSE 80
当我启动我的docker时,我需要调用docker run -p 80:80 ...
是不是有一个选项来自动发布每个暴露的端口相同的端口号? 我起初以为-P
会这样做,但是实际上这个端口是随机select的。
这将比必须设置-p 80:80
更方便,如果-p 80:80
被configuration为使用这个参数,没有理由使端口号成为docker run
的参数!
这不是一个function。
您需要将您的docker运行包装在Tejesh Mehta的 这个脚本中(javascript):
#!/usr/bin/env node # Usage: docker run [..opts] `publish-static <image>:<tag>` 'use strict' const execSync = require('child_process').execSync const image = process.argv[2] const inspect = JSON.parse( execSync('docker inspect ' + image).toString() ) const ports = Object.keys(inspect[0].ContainerConfig.ExposedPorts) let out = ports.reduce(function (str, p, i) { const port = p.split('/')[0] str += `-p=${port}:${port} ` return str }, '') out += image process.stdout.write(out) process.exit()