2015-10-22 3 views
0

Я пытаюсь запустить контейнер-докер для среды разработки. Я использую ниже Docker файлОшибка файла ракеты-контейнера Docker

FROM phusion/passenger-ruby22:latest 
# Set correct environment variables. 
ENV HOME /root 

# Use baseimage-docker's init system. 
CMD ["/sbin/my_init"] 

# Expose Nginx HTTP service 
EXPOSE 80 

# Start Nginx/Passenger 
RUN rm -f /etc/service/nginx/down 

# Remove the default site 
RUN rm /etc/nginx/sites-enabled/default 

# Add the nginx site and config 
ADD nginx.conf /etc/nginx/sites-enabled/webapp.conf 
ADD rails-env.conf /etc/nginx/main.d/rails-env.conf 

# Install bundle of gems 
WORKDIR /tmp 
ADD Gemfile /tmp/ 
ADD Gemfile.lock /tmp/ 
RUN bundle install 

# Add the Rails app 
ADD . /home/app/webapp 
RUN chown -R app:app /home/app/webapp 

# Clean up APT and bundler when done. 
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 

nginx.conf ниже

# webapp.conf 

server { 
    listen 80; 
    server_name localhost; 
    root /home/app/webapp/public; 
    passenger_enabled on; 
    passenger_user app; 
    passenger_ruby /usr/bin/ruby2.2; 
} 

и Rails ко файл, как показано ниже,

# rails-env.conf 

# Set Nginx config environment based on 
# the values set in the .env file 

env PASSENGER_APP_ENV; 
env RAILS_ENV; 
env SECRET_KEY_BASE; 
env APP_DEV_DB_HOST; 
env APP_DEV_DB_DATABASE; 
env APP_DEV_DB_PORT; 
env APP_DEV_DB_USERNAME; 
env APP_DEV_DB_PASSWORD; 

Я держал БД (MySQL) вне контейнера и связанный с IP-адресом виртуальной машины.

После создания Docker изображения, теперь я пытаюсь запустить rake db:setup, но я получаю сообщение, как показано ниже,

sudo docker run -i -t -e "RAILS_ENV=development" -e "APP_DEV_DB_HOST=myipaddress" -e "APP_DEV_DB_DATABASE=SampleApp_Development" -e "APP_DEV_DB_PORT=3306" -e "APP_DEV_DB_USERNAME=sampleapp_dev" -e "APP_DEV_DB_PASSWORD=pass_dev" -e "PASSENGER_APP_ENV=development" sample_base rake db:setup 

rake aborted! 
    No Rakefile found (looking for: rakefile, Rakefile, rakefile.rb, Rakefile.rb) 

    (See full trace by running task with --trace) 

В то же время, если я бег это с помощью Баша, я могу запустить rake db:setup в контейнер

Любопытно узнать, что вызывает эту проблему !.

ответ

1

Ожидается, что ваш WORKDIR настроен на /tmp; попробуйте установить его на /home/app/webapp после RUN bundle install.

Я также заметил следующее:

  • Эта линия не будет сохранять любое пространство RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*; файлы будут существовать в предыдущих слоях.

  • Вы переопределяете инструкцию CMD (CMD ["/sbin/my_init"]) во время выполнения; поэтому все, что в этом скрипте, не будет запущено.

+0

Упс ... Спасибо :) – anoop

Смежные вопросы