2015-12-27 58 views
2

Dockerfile:泊塢窗,構成了不啓動的容器

FROM shawnzhu/ruby-nodejs:0.12.7 

RUN \ 
    apt-get install git \ 
    && npm install -g bower gulp grunt \ 
    gem install sass 

RUN useradd -ms /bin/bash devel 

# Deal with ssh 
COPY ssh_keys/id_rsa /devel/.ssh/id_rsa 
COPY ssh_keys/id_rsa.pub /devel/.ssh/id_rsa.pub 
RUN echo "IdentityFile /devel/.ssh/id_rsa" > /devel/.ssh/config 

# set root password 
RUN echo 'root:password' | chpasswd 

# Add gitconfig 
COPY .gitconfig /devel/.gitconfig 

USER devel 

WORKDIR /var/www/ 

EXPOSE 80 

泊塢窗,compose.yml文件:

nodejs: 
    build: . 
    ports: 
    - "8001:80" 
    - "3000:3000" 
    volumes: 
    - ~/Web/docker/nodejs/www:/var/www 

命令:

$ docker-組成buildjs

$搬運工圖像

REPOSITORY    TAG     IMAGE ID   CREATED    VIRTUAL SIZE 
nodejs_nodejs   latest    aece5fb27134  2 minutes ago  596.5 MB 
shawnzhu/ruby-nodejs 0.12.7    bbd5b568b88f  5 months ago  547.5 MB 

$碼頭工人,組成了-d的NodeJS

Creating nodejs_nodejs_1 

$搬運工PS

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 

$搬運工PS --all

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS       PORTS    NAMES 
c24c6d0e756b  nodejs_nodejs  "/bin/bash"   About a minute ago Exited (0) About a minute ago      nodejs_nodejs_1 

正如你可以ee docker-compose up -d應該創建了一個容器並在後臺運行它,但它沒有。相反,它退出代碼0.

+0

您Dockerfile不啓動任務 – Gearnode

+0

我應該在Dockerfile中添加什麼? –

+0

例如,您可以添加節點start_server.js?你明白爲什麼? – Gearnode

回答

7

如果您的Dockerfile沒有執行任何操作(例如Web服務器在端口80上偵聽),它將在完成運行指令後立即丟棄。因爲Docker containers should be "ephemeral"

如果你只是想開始一個容器中,並通過終端與它進行交互,不要使用docker-compose up -d,改用以下:

docker run -it --entrypoint=/bin/bash [your_image_id] 

這將啓動你的容器和運行/bin/bash,則-it幫助你保持終端會話與容器交互。完成作品後,請按Ctrl-D退出。

+0

解決方案是可行的,但是如果你想調試orcherstration ,這不是很方便的解決方案。我已經到了下面這個黑客行列:添加'entrypoint:tail/var/log/syslog'(例如,基本上,圖像中存在的任何文件) - 這不會讓容器立即退出。 PS:當然,如果你在容器中運行任何守護進程,你都不需要 – 62mkv