Tôi đang cố gắng sử dụng docker với đường ray, xây dựng toàn bộ ngăn xếp bên trong một thùng chứa. Endgoal của tôi là để có một nginx/memcached/unicorn/rails/postgres stack với runit như người quản lý quá trình. Cho đến nay tôi đã cài đặt ứng dụng, ruby và postgres của mình. Tại thời điểm này tôi đang cố gắng để kiểm tra nếu mọi thứ đang hoạt động chính xác trước khi tôi chuyển sang nginx/memcached/unicorn.
Dưới đây là dockerfile tôi:Docker, không thể tiếp cận "rails server" phát triển từ localhost: 3000 sử dụng docker flag -p 3000: 3000
FROM ubuntu:trusty
ADD . /app
# Update repos
RUN apt-get update
# General
RUN apt-get install -y git curl software-properties-common python-software-properties ssh
# Install ruby (taken from https://gist.github.com/konklone/6662393)
RUN \curl -Lk https://get.rvm.io | bash -s stable
RUN /bin/bash -l -c "rvm requirements"
RUN /bin/bash -l -c "rvm install 2.1.1"
ENV PATH /usr/local/rvm/gems/ruby-2.1.1/bin:/usr/local/rvm/rubies/ruby-2.1.1/bin:$PATH
RUN gem install bundler --no-ri --no-rdoc
# Install nodejs (rails js runtime)
RUN apt-get install -y nodejs
# Install postgresql (adapted from https://wiki.postgresql.org/wiki/Apt)
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main"
RUN curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
RUN apt-get update
RUN apt-get install -y postgresql-9.3 postgresql-client-9.3 postgresql-contrib-9.3
# Setup postgresql
RUN mkdir /pgsql && chown postgres /pgsql
USER postgres
ENV PATH $PATH:/usr/lib/postgresql/9.3/bin/
RUN initdb -E UTF8 -D /pgsql/data
USER root
# Needed for pg gem (from http://stackoverflow.com/a/20754173)
RUN apt-get install -y libpq-dev
Sau đó, tôi tạo ra một container với lệnh sau đây
docker run -it -p 3000:3000 *dockerfile_image* /bin/bash -l
Bên trong của container mà tôi thiết lập postgresql như một công việc nền và chạy đường ray s
$ sudo -u postgres /usr/lib/postgresql/9.3/bin/postgres -D /pgsql/data
^z
$ bg
$ sudo -u postgres /usr/bin/psql -c "create role *appname* login createdb"
$ cd /app
$ bundle && rake db:create db:migrate
$ rails s
=> Booting WEBrick
=> Rails 4.1.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
=> Ctrl-C to shutdown server
....
Nhưng như các trạng thái tiêu đề, tôi không thể kết nối từ localhost: 3000. Tôi cũng đã thử
- cố gắng kết nối từ 0.0.0.0:3000
- rời -p 3000: 3000 và cố gắng để kết nối từ container_ip: 3000
- lộ 3000 trong dockerfile, sử dụng Docker ps để tìm ra cổng lập bản đồ và cố gắng localhost: mapped_port
Ngoài ra tôi không biết nếu nó quan trọng nhưng tôi đang sử dụng boot2docker trên OSX.
Xem thêm http://stackoverflow.com/a/29303930/6309 – VonC