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?

  • Dockerize Applications or Machines?
  • Docker-Tuleap-List all Tuleap database tables running in docker container
  • Not able to pull image from local docker registry when tried to create a POD using yaml file
  • docker/boot2docker in amazon ec2
  • Docker. No such file or directory
  • two docker app container on one nginx
  • 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.

  • Can't change mac address of docker containter
  • Set the port for docker-compose.yml at runtime
  • How to use docker deploy in docker-compose 3?
  • Cannot ssh to server as I install on OVH dedicated server
  • Hide/obfuscate environmental parameters in docker
  • Docker container detected! Ruxit Agent cannot be installed
  • 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.