我无法 运行 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 缺少一些功能。
我有下一个 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 缺少一些功能。