我无法使用Docker和Passenger / nginx图像运行rails控制台

我有下一个docker-compose容器:

# 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' 

我无法弄清楚如何运行rails控制台。 我正在使用乘客/ nginx图像,一切正常。 但是,我的数据库是在另一个容器,我想进入轨道控制台手动创build几个用户。

我试着用:

 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" 

但它仍然显示相同的输出。

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

提前致谢!

首先,您必须使用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。 从那里你可以运行你喜欢的任何命令,例如你的rails控制台。

你也应该使用 docker-compose文件的版本2 ,因为版本1缺乏一些function。