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 set read timeout for push
  • Why don't docker use the host OS for all purposes
  • How to get Docker container ID alone
  • Docker login: cannot input value for username on windows + powershell
  • How to identify whether my container is running on AWS ECS or not?
  • Is it possible to change the IP of docker container when it is running?
  • 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.

  • why shipyard docker container does not start?
  • apache-spark startup error on alpine linux docker
  • Starting Docker Daemon Through Ansible
  • Empty directory when mounting volume using windows for docker
  • Docker Openshift Security unidirectional route
  • How to access Docker containers from within a Vagrant VM
  • 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.