Docker image from existing Rails/Unicorn/MySQL app

I am new to Docker and experimenting by creating an image from an existing Rails/Unicorn/MySQL app. My files are below and the image successfully creates but I’m unclear if things are actually working properly as I can’t access the traditional Unicorn localhost URL, or the boot2docker IP.

So my question is, how do I access a Unicorn server locally on OSX with a Docker image running?

  • Mariadb-10.0 install fails in boot2docker with “policy-rc.d denied execution” but works in Docker
  • How to rename a Bluemix namespace (container registry)?
  • Connection refused when try to connect http server in docker daemon container
  • AOT Compiler to Shrink Docker Container
  • Connect to a Service running inside a docker container from outside
  • Docker confusion
  • Dockerfile

    # Dockerfile
    FROM seapy/rails-nginx-unicorn
    
    # Publish port 8080
    EXPOSE 8080
    
    CMD ["bundle", "exec","unicorn", "-p", "8080"]
    

    Docker Image Run Command

    docker run --name games-app --link test-mysql:mysql -p 8080 -d -e SECRET_KEY_BASE=test sample_rails_games_app

    Docker PS Output

    docker ps
    CONTAINER ID        IMAGE                    COMMAND                CREATED             STATUS              PORTS                     NAMES
    cf9c45d62763        sample_rails_games_app   "bundle exec unicorn   17 minutes ago      Up 17 minutes       0.0.0.0:32777->8080/tcp   games-app
    93485cb7bcca        mysql                    "/entrypoint.sh mysq   6 hours ago         Up 6 hours          3306/tcp                  test-mysql
    

    If I try to hit localhost:8080 or http://192.168.59.103:8080/ I am getting a Gateway Timeout: can't connect to remote host

    Docker Logs Output

    docker logs cf9c45d62763
    I, [2015-07-30T22:44:44.941674 #1]  INFO -- : listening on addr=0.0.0.0:8080 fd=9
    I, [2015-07-30T22:44:44.941927 #1]  INFO -- : worker=0 spawning...
    I, [2015-07-30T22:44:44.944000 #1]  INFO -- : master process ready
    I, [2015-07-30T22:44:44.944836 #8]  INFO -- : worker=0 spawned pid=8
    I, [2015-07-30T22:44:44.945103 #8]  INFO -- : Refreshing Gem list
    I, [2015-07-30T22:44:46.729708 #8]  INFO -- : worker=0 ready
    

    I have also tried the boot2docker workarounds from here to no avail: https://github.com/boot2docker/boot2docker/blob/master/doc/WORKAROUNDS.md

    Any guidance is greatly appreciated.

  • Application manager in YARN setup
  • Can Docker be deployed on version 2.6.x of the Linux kernel?
  • How to get ng serve to work with host name on a VirtualBox Docker set up
  • 502 Bad Gateway nginx/1.11.5 running inside docker
  • com.spotify.docker.client.DockerRequestException: Request error: DELETE unix://localhost:80/v1.12/containers/…: 409
  • Is there an alternative/workaround for `boot2docker save`?
  • One Solution collect form web for “Docker image from existing Rails/Unicorn/MySQL app”

    You have to use the eth1 address of your boot2docker vm.

    Run from a shell:

    boot2docker ssh
    

    and then

    ifconfig eth1
    docker@boot2docker:~$ ifconfig eth1
    eth1      Link encap:Ethernet  HWaddr 08:00:27:69:53:F6
              inet addr:192.168.59.103  Bcast:192.168.59.255  Mask:255.255.255.0
              inet6 addr: fe80::a00:27ff:fe69:53f6/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:170143 errors:0 dropped:0 overruns:0 frame:0
              TX packets:98176 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000
              RX bytes:107722766 (102.7 MiB)  TX bytes:13713741 (13.0 MiB)
    
    docker@boot2docker:~$
    

    192.168.59.103 is the address you want to use from your mac. The port depends on what port your are forwarding. For example in this case:

    $ docker ps
    CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS              PORTS                   NAMES
    2e1d63d6928a        f6ac7e4116f3        "/usr/sbin/sshd -D -   3 hours ago         Up About an hour    0.0.0.0:32771->22/tcp   mad_jones
    104f730aa7da        f6ac7e4116f3        "/usr/sbin/sshd -D -   3 hours ago         Up About an hour    0.0.0.0:32770->22/tcp   reverent_almeida
    

    it’s either 32771 or 32770. In this example it’s an sshd server running by in your case it would be your unicorn which would be port 32777 So I think you are connecting to the right address but you need to connect to 32777 instead.

    Hope it helps.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.