2015-04-14 1 views
6

Ich baue einen Docker-Container, der ein Perl/Mojolicious-Repo von bitbucket zieht, aber ich habe Probleme. Ich habe meine Dockerfile wie folgt aus:Perl-Docker-Container zu Elastic Beanstalk implementieren

# DOCKER-VERSION 0.3.4 
FROM  perl:latest 
MAINTAINER My Name [email protected] 

# Update aptitude with new repo 
RUN apt-get update 

# Install software 
RUN apt-get install -y git 
# Make ssh dir 
RUN mkdir /root/.ssh/ 

# Copy over private key, and set permissions 
ADD repo-key /root/.ssh/id_rsa 

# Create known_hosts 
RUN touch /root/.ssh/known_hosts 
# Add bitbuckets key 
RUN ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts 

RUN curl -L http://cpanmin.us | perl - App::cpanminus 
RUN cpanm Mojolicious 

RUN cachebuster=b953b35 git clone -b branch [email protected]:org/project.git 

EXPOSE 8080 

WORKDIR project 
CMD hypnotoad script/project 

Und lokal auf docker build -t name/project . es baut fein und sagt: „Erfolgreich gebaut.“

Ich komprimierte es mit der Repo-Key-Datei und fütterte das zu Elastic Beanstalk, ich klickte Upload und Deploy (ich 2048 Spielbeispiel erfolgreich bereitgestellt und versuchte, es zu replizieren).

Dies kommt mit Dockerrun.aws.json: No such file or directory zurück. Was ich finde ist seltsam, da die Dokumentation sagt, Dockerfile oder Dockerrun.aws.json kann unabhängig für verschiedene Bedürfnisse verwendet werden. Aber was auch immer, ich gab es einen kurzen, hoffentlich inkonsequent, Dockerrun.aws.json, etwa so:

{ 
    "AWSEBDockerrunVersion": "1", 
    "Ports": [ 
     {"ContainerPort": "8080"} 
    ], 
    "Volumes": [] 
} 

Es ist immer noch und das Protokoll gibt nun [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04run.sh] command failed with error code 1: und weitere Docker container quit unexpectedly after launch.

Kann mir jemand bei der Fehlersuche helfen?

Antwort

2

Ich habe es herausgefunden. Das Problem war, dass hypnotoad standardmäßig im Hintergrund ausgeführt wird und dies den Container sofort zum Absturz bringt. Wenn Sie das Flag -f hinzufügen, wird es im Vordergrund ausgeführt und der Container bleibt bestehen. Ich wechselte auch CMD zu ENTRYPOINT.

#... same as above except for last line 

WORKDIR project 
ENTRYPOINT [ "hypnotoad", "-f", "./script/project" ] 

Sie haben noch EB beide Dockerfile und Dockerrun.aws.json ohne ersichtlichen Grund zu füttern, aber auch so, es funktioniert ohne Fehler.