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?

  • Docker can't connect to Websocket PHP
  • golang net.LookupHost in docker container return
  • Docker SSH Server Connection Refused
  • Is it possible to run GUI apps in windows containers?
  • Docker maven build fails to download JARs
  • swift 3.1.1.-release on linux copyItem(atPath:toPath:) is not yet implemented
  • 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>8080/tcp   games-app
    93485cb7bcca        mysql                    "/ mysq   6 hours ago         Up 6 hours          3306/tcp                  test-mysql

    If I try to hit localhost:8080 or 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= 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:

    Any guidance is greatly appreciated.

  • Replace default configuration with my own in a Docker image
  • Docker-Compose persistent data MySQL
  • Is there whoami analog for Docker?
  • docker remote api cannot bind a port to a host
  • Limiting a Docker Container to a single cpu core
  • How to recover data from a deleted Docker container? How to reconnect it to the data?
  • 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:  Bcast:  Mask:
              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)
 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>22/tcp   mad_jones
    104f730aa7da        f6ac7e4116f3        "/usr/sbin/sshd -D -   3 hours ago         Up About an hour>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.