나는 간단한 오류를 범하고 있지만, Mac에서 docker를 사용하여 포트를 제대로 노출 할 수는 없습니다.Docker 컨테이너 외부의 서비스에 액세스 할 수 없습니다.
FROM ruby:2.3.1
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
EXPOSE 3000
가 그럼 난 이미지를 구축 :
> rails -v
Rails 5.0.0.1
> rails new dt6
# ... rails creates a new app
> cd dt6
그럼 내가 레일 응용 프로그램의 루트에이 Dockerfile을 추가
호스트에서 처음부터 시작 : 여기에 내가 뭘하는지입니다 컨테이너를 실행하십시오.> docker build -t dt6 .
> docker run --rm -p 3000:3000 dt6 rails s
=> Booting Puma
=> Rails 5.0.0.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.6.0 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3000
Use Ctrl-C to stop
정상적인 레일/푸마처럼 보입니다. "서비스를 시작할 준비가되었습니다."라는 메시지가 나타납니다.
> curl localhost:3001
curl: (7) Failed to connect to localhost port 3001: Connection refused
: 나는 임의의 포트에 대해 다른 메시지가 있기 때문에
> curl localhost:3000
curl: (52) Empty reply from server
나는, 고정 표시기의 포트 3000 뭔가 일을 알고있다 : 그러나, 호스트 머신에서, 나는 레일의 서버에 액세스 할 수 없습니다
특히 레일 서버 은 실행 중입니다. 내가 용기에 부착하고 내부에서 레일 서버를 공격하면, 그것을 작동 :
> docker exec -it dt6_container bash
[email protected]:/myapp# curl localhost:3000
<!DOCTYPE html>
<html>
<head>
#... a normal html response from the rails server
TLDR : 나는에서 서버에 액세스 할 때 고정 표시기 컨테이너에서 레일 서버를 실행, 나는 빈 반응을 얻고있다 호스트 컴퓨터. 내가 외부에서이 컨테이너 내부에서 실행중인 레일 서버에 http 요청을 할 수 있도록하려면 무엇을 잘못하고 있습니까?
당신이하는 일은 Linux에서 잘 작동하지만, Mac이나 Windows에서는 그렇지 않습니다. VM을 사용하는 것은 Linux를 모방합니다. – user2915097
https://www.viget.com/articles에서 추출하십시오./how-to-use-docker-on-os-x-the-missing-guide'curl $ (boot2docker ip) : 49153' (예제) – user2915097
Mac 용 Docker 또는 Docker Machine/Docker Toolbox를 사용하고 있습니까? –