我无法使用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。