2015-04-14 3 views
6

Я создаю контейнер Docker, который тянет perl/mojolicious repo от bitbucket, но у меня возникают проблемы. У меня Dockerfile так:Развертывание контейнера Docker Perl на эластичный бобовый станок

# 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 

И, локально, на docker build -t name/project . он строит отлично и говорит «успешно построен.»

Я закрепил его с помощью файла repo-key и подал его на Elastic Beanstalk, я нажал кнопку Upload and Deploy (я успешно развернул образец игры 2048 и попытался его воспроизвести).

Это возвращается с Dockerrun.aws.json: No such file or directory. Я думаю, это странно, потому что документация говорит, что Dockerfile или Dockerrun.aws.json могут использоваться независимо для разных нужд. Но независимо от того, я дал ему короткий, надеюсь, несущественный, Dockerrun.aws.json, например, так:

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

Он по-прежнему не удается, и журнал в настоящее время заявляет [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/04run.sh] command failed with error code 1: и дальнейшее Docker container quit unexpectedly after launch.

Может ли кто-нибудь помочь мне устранить эти файлы?

ответ

2

Я понял. Проблема заключалась в том, что по умолчанию hypnotoad работает в фоновом режиме, и это мгновенно уничтожает контейнер. Добавляя флаг -f, он запускается на переднем плане, и контейнер сохраняется. Я также переключил CMD на ENTRYPOINT.

#... same as above except for last line 

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

Вы все еще должны кормить EB как Dockerfile и Dockerrun.aws.json без видимой причины, но даже так, она работает без ошибок.

Смежные вопросы