2015-04-14 4 views
6

Sto creando un contenitore Docker che estrae un repository perl/mojolicious da bitbucket ma sto riscontrando problemi. Ho il mio Dockerfile come questo:Distribuzione di Perl Docker Container a Elean Beanstalk

# 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 

E, a livello locale, su docker build -t name/project . si costruisce bene e dice "costruito con successo."

L'ho zippato con il file repo-key e l'ho alimentato con Elastic Beanstalk, ho fatto clic su Upload and Deploy (ho distribuito con successo l'esempio del gioco 2048 e ho provato a replicarlo).

Questo torna con Dockerrun.aws.json: No such file or directory. Quale penso sia strano perché la documentazione dice Dockerfile o Dockerrun.aws.json può essere utilizzato indipendentemente per esigenze diverse. Ma qualunque cosa, ho dato una breve, si spera senza conseguenze, Dockerrun.aws.json, in questo modo:

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

Non riesce ancora e il registro ora afferma [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04run.sh] command failed with error code 1: e l'ulteriore Docker container quit unexpectedly after launch.

Qualcuno può aiutarmi a risolvere questi file?

risposta

2

L'ho capito. Il problema era che hypnotoad viene eseguito in background per impostazione predefinita e questo fa sì che il contenitore muoia all'istante. Aggiungendo il flag -f, viene eseguito in primo piano e il contenitore persiste. Ho anche cambiato CMD in ENTRYPOINT.

#... same as above except for last line 

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

avete ancora a nutrire EB sia Dockerfile e Dockerrun.aws.json senza alcuna ragione apparente, ma anche così, funziona senza errori.