2015-04-15 9 views
7

Ich versuche, ein Dockerized Play app auf OS X über docker-compose 1.1.0/boot2docker 1.5.0 zu betreiben. Allerdings spielt es nicht wirklich, gut, (verzeihen Sie das Wortspiel) ...Wie kann ich Docker-Compose unter OS X mit einer Play App arbeiten lassen?

Das Problem ist, dass die Anwendung mit einem Pseudo-TTY (von Docker bereitgestellt) ausgeführt werden muss, und das macht boot2docker beim Anhängen hängen .

ich die app laufen, durch docker-compose up, und es hängt wie unten gezeigt:

> docker-compose up 
Recreating exampleapp_web_1... 
Attaching to exampleapp_web_1 

Allerdings, wenn ich die App direkt, ohne Docker-compose laufen, funktioniert es:

> docker rm exampleapp_web_1 ; docker run -p 9000:9000 -ti --name exampleapp_web_1 -v `pwd`:/code -v `pwd`/.docker_home:/root exampleapp_web 
[info] Loading project definition from /code/project 
[info] Set current project to example-app (in build file:/code/) 

--- (Running the application, auto-reloading is enabled) --- 

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 

(Server started, use Ctrl+D to stop and go back to the console...) 

Wie kann ich docker-compose in meinem Szenario arbeiten?

Andockfensters-compose.yml

web: 
    build: . 
    command: run 
    ports: 
    - "9000:9000" 
    volumes: 
    - .:/code 
    - .docker_home:/root 
    stdin_open: true 
    tty: true 

Dockerfile

FROM aknudsen/play-with-node 
MAINTAINER Arve Knudsen <[email protected]> 

COPY ./ /code 
WORKDIR /code 

EXPOSE 9000 

ENTRYPOINT ["sbt"] 
CMD ["run"] 

Ausführliche Ausgabe von docker-compose up

> docker-compose --verbose up 
Compose version 1.1.0 
Docker base_url: https://192.168.59.103:2376 
Docker version: KernelVersion=3.18.5-tinycore64, Arch=amd64, ApiVersion=1.17, Version=1.5.0, GitCommit=a8a31ef, Os=linux, GoVersion=go1.4.1 
docker containers <- (all=True) 
docker containers -> (list with 3 items) 
Creating exampleapp_web_1... 
docker containers <- (all=True) 
docker containers -> (list with 3 items) 
docker images <- (name=u'exampleapp_web') 
docker images -> (list with 1 items) 
docker create_container <- (tty=True, name=u'exampleapp_web_1', image=u'exampleapp_web', stdin_open=True, environment={}, command='run', volumes={u'/code': {}, u'/root': {}}, detach=False, ports=[u'9000']) 
docker create_container -> {u'Id': u'dc0ebc7e34ea8793023a968725ab696e1a3d60341105e84e81ace776952f55d8', 
u'Warnings': None} 
docker inspect_container <- (u'dc0ebc7e34ea8793023a968725ab696e1a3d60341105e84e81ace776952f55d8') 
docker inspect_container -> {u'AppArmorProfile': u'', 
u'Args': [u'run'], 
u'Config': {u'AttachStderr': True, 
      u'AttachStdin': True, 
      u'AttachStdout': True, 
      u'Cmd': [u'run'], 
      u'CpuShares': 0, 
      u'Cpuset': u'', 
      u'Domainname': u'', 
      u'Entrypoint': [u'sbt'], 
... 
docker start <- (u'dc0ebc7e34ea8793023a968725ab696e1a3d60341105e84e81ace776952f55d8', links=[], cap_add=None, restart_policy=None, dns_search=None, network_mode=u'bridge', binds={u'/Users/arve/Projects/example-app/.docker_home': {u'bind': u'/root', u'ro': False}, u'/Users/arve/Projects/example-app': {u'bind': u'/code', u'ro': False}}, dns=None, volumes_from=[], port_bindings={u'9000': [u'9000']}, cap_drop=None, privileged=False) 
docker start -> None 
docker containers <- (all=False) 
docker containers -> (list with 2 items) 
Attaching to exampleapp_web_1 
docker attach <- (u'dc0ebc7e34ea8793023a968725ab696e1a3d60341105e84e81ace776952f55d8', stderr=1, logs=1, stream=1, stdout=1) 
docker attach -> <generator object _multiplexed_response_stream_helper at 0x1062db2d0> 

Log von Docker Behälter

> docker logs exampleapp_web_1 
[info] Loading project definition from /code/project 
[info] Set current project to example-app (in build file:/code/) 

--- (Running the application, auto-reloading is enabled) --- 

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 

(Server started, use Ctrl+D to stop and go back to the console...) 

GitHub Ausgabe

Es gibt eine GitHub issue, die beschreibt, genau dieses Problem zu sein scheint.

+0

können Sie im ausführlichen Modus komponieren laufen. können Sie auch Ihren Docker Log aufnehmen? – booyaa

+0

@booyaa Enthalten beide jetzt, danke. – aknuds1

+0

ungerade sehen überhaupt keine Fehler, müssen einige Tests zu tun, vermutlich ein erfolgreicher Test ist, wenn Sie die Website auf http: // b2d-ip: 9000/mit '' 'docker-compose''' erreichen können? – booyaa

Antwort

1

sehen diese URL https://www.playframework.com/documentation/2.4.x/ProductionConfiguration

Schritte Anwendung in der Produktion

1) in Projektordner, führen Sie $ sbt dist 2) führen Sie diesen Befehl aus Projektstamm ./target/universal/your-app laufen -name -javaArguments ...

in docker-komponieren

web: 
build: . 
command: sbt dist && ./target/universal/app-name -JavaArguments 
ports: 
    - "9000:9000" 
volumes: 
    - .:/code 
    - .docker_home:/root 
stdin_open: true 
tty: true