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

I can't run rails console with Docker and Passenger/nginx image

我有下一个 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 控制台。我正在使用 passenger/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 数据库中。

提前致谢!

首先,您必须使用 docker-compose up 启动您的组合容器,这将启动您定义的所有服务。然后你可以通过他们的名字附加到你的 运行ning 容器。您可以从 docker ps 的输出中获取 运行ning 容器的名称,例如:

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 是我的数据库。但我想连接到我的网络应用程序。所以我可以直接在运行ning容器中启动一个shell:

docker exec -it container1 bash

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

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