2016-08-31 59 views
1

轨控制台我已经下一个码头工人,撰写容器:我不能运行泊坞窗和乘客/ nginx的图像

# docker-compose.yml 
version: '2' 
services: 
web: 
    build: . 
    ports: 
    - "80:80" 
    volumes: 
    - .:/home/app/NAME_OF_MY_APP 
db: 
    image: postgres:9.4 
    ports: 
    - "5432" 
    environment: 
    POSTGRES_USER: 'postgres' 

我想不通我怎么能运行轨道控制台。我使用乘客/ nginx图像,一切正常。 但是,我的数据库在另一个容器上,我想在rails控制台上手动创建几个用户。

我试着用:

sudo docker-compose run web rails c 

但接下来出现的错误:

ERROR: Cannot start service web: oci runtime error: exec: "rails": executable file not found in $PATH 

而且,我想:

sudo docker-compose run web "rails c" 

但它剧照显示相同的输出。

我想进入控制台,输入一些用户并将其存储在postgres数据库中。

在此先感谢!

回答

1

首先,您必须启动您的组合容器docker-compose up,该容器启动所有定义的服务。然后你可以通过他们的名字附加到你正在运行的容器。您从docker ps输出,例如:

CONTAINER ID  IMAGE  COMMAND CREATED  STATUS    PORTS     NAMES 
d6b317a4c10b  image  "..." 27 hours ago Up 27 hours   0.0.0.0:4284->4284/tcp container1 
4fe15ab206b5  postgresql "..." 27 hours ago Up 27 hours   5432/tcp     container2 

所以在这个例子container2的是我的数据库中获取运行容器的名字。但我想连接到我的Web应用程序。所以我可以直接在运行容器中启动一个shell:

docker exec -it container1 bash 

它在container1中启动一个bash。从那里你可以运行你喜欢的任何命令,例如您的导轨控制台。

另外你还有docker-compose文件的should use version 2,因为版本1缺少一些功能。

+0

我试过你的解决方案,但它不起作用。它打印出和以前一样的错误。 Rails c是在rails应用程序内的ruby环境中输入的,所以我可以手动创建用户。 – Ruffeng

+0

然后,这不是Docker本身的错误。当你甚至不能执行'rails'时,它必须在你的容器内。我认为导轨没有正确配置。当我用'docker run -it rails bash'在我的机器上尝试它,然后输入'rails'时,它按预期工作。 – n2o

+0

男人,真是太神奇了!我更新了我的docker-compose,并通过bash进行了委托,我可以完成所有我想要的东西。我非常感谢你的帮助。谢谢! – Ruffeng