我正在尝试在rails应用程序上使用docker。此设置适用于其他开发人员的计算机,但不适用于我的计算机。我可以将mysql设置为“ up”,但不能使用rails应用程序。我已经去了两天了。
我正在使用Docker Quickstart Terminal进入Windows 10家庭版。大约一年前,我能够在同一台机器上运行它。
这是我的Dockerfile:
FROM ruby:2.5.3
ARG workdir=/bundle-api
RUN apt-get update -qq && apt-get install -y build-essential netcat graphviz
RUN mkdir -p ${workdir}
WORKDIR ${workdir}
ADD Gemfile ${workdir}/Gemfile
ADD Gemfile.lock ${workdir}/Gemfile.lock
RUN bundle install
ADD . ${workdir}
这是我的docker-compose文件:
version: '2'
services:
db:
image: mysql:5.7
container_name: bundle-mysql
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: bundle_api_pwd
MYSQL_DATABASE: bundle_api_dev
MYSQL_USER: bundle_api
MYSQL_PASSWORD: bundle_api_pwd
ports:
- "3306:3306"
web:
build: .
container_name: bundle-rails
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/bundle-api:cached
- bundle_cache:/bundle_cache
ports:
- "3100:3000"
environment:
DB_HOST: db
DB_USERNAME: root
DB_PASSWORD: bundle_api_pwd
BUNDLE_PATH: /bundle_cache
GEM_HOME: /bundle_cache
GEM_PATH: /bundle_cache
depends_on:
- db
stdin_open: true
tty: true
bundle_cache:
image: busybox
volumes:
- bundle_cache:/bundle_cache
volumes:
db_data:
bundle_cache:
要重新开始,请运行以下命令:
docker-compose build --no-cache
一切似乎都正常。我可以看到所有的宝石都安装了。
运行后,我运行:docker-compose up
并收到此错误。
bundle-rails | Could not locate Gemfile or .bundle/ directory
bundle-rails exited with code 10
Name Command State Ports
------------------------------------------------------------------------------------------------------------
bundle-backend_bundle_cache_1 sh Exit 0
bundle-mysql docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp, 33060/tcp
bundle-rails bundle exec rails s -p 300 ... Exit 10
答案 0 :(得分:0)
好像您在BUNDLE_PATH
中设置了docker-compose.yml
,但没有在Dockerfile
中设置它。这意味着您将把宝石安装到/usr/local/bundle
,但是在您启动容器时,红宝石会在/bundle-cache
中查找宝石。