Dan*_*lez 3 docker docker-compose
docker-compose exec从读取时失败stdin:
$ echo "use mydb; show measurements;" | docker-compose exec influxdb influx
Connected to http://localhost:8086 version 1.2.4
InfluxDB shell version: 1.2.4
> Traceback (most recent call last):
File "/usr/local/bin/docker-compose", line 9, in <module>
load_entry_point('docker-compose==1.9.0', 'console_scripts', 'docker-compose')()
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 65, in main
command()
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 117, in perform_command
handler(command, command_options)
File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 462, in exec_command
pty.start()
File "/usr/local/lib/python2.7/dist-packages/dockerpty/pty.py", line 338, in start
io.set_blocking(pump, flag)
File "/usr/local/lib/python2.7/dist-packages/dockerpty/io.py", line 32, in set_blocking
old_flag = fcntl.fcntl(fd, fcntl.F_GETFL)
ValueError: file descriptor cannot be a negative integer (-1)
Run Code Online (Sandbox Code Playgroud)
使用该-T标志可以解决此问题,但似乎可以抑制从stdin进行读取:
$ echo "use mydb; show measurements;" | docker-compose exec -T influxdb influx
Run Code Online (Sandbox Code Playgroud)
(我需要杀死该命令,因为它什么也没显示并且无法从中读取stdin)
这似乎是一个docker-compose错误,也许我应该提交这个文件?
$ docker-compose --version
docker-compose version 1.9.0, build 2585387
Run Code Online (Sandbox Code Playgroud)
有关:
在https://github.com/docker/compose/issues/3352中, endzyme建议使用docker命令来执行此操作。根据他的建议,我在bash个人资料中创建了一个微小的bash函数:
# Like `docker-compose exec` but forwarding stdin to the container
# See https://github.com/docker/compose/issues/3352
function docin() {
local service="$1"; shift
docker exec -i $(docker-compose ps -q $service) $@
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以像这样使用它:
echo "use mydb; show measurements;" | docin influxdb influx
Run Code Online (Sandbox Code Playgroud)
在他们修复此问题之前,这是一个足够好的解决方法docker-compose。
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |