【发布时间】:2017-07-10 10:56:35
【问题描述】:
我有一些 tar 文件,我想将它们移动到 docker 映像并在那里提取它们,然后运行 python web 应用程序脚本。我有提取这些文件的 sh 脚本。
如果我使用 RUN 命令运行脚本,那么它们会被提取,但它们不会出现在最终容器中。
我也使用了入口点,但它执行然后关闭不执行“主 python 脚本”的容器。
有没有办法执行这个安装脚本,然后继续运行主脚本而不关闭?
Dockerfile
# Use an official Python runtime as a parent image
FROM python:2.7-slim
RUN apt-get update \
&& apt-get install -y curl \
&& curl -sL https://deb.nodesource.com/setup_4.x | bash \
&& apt-get install -y nodejs \
&& apt-get install -y git \
&& npm install -g bower \
&& npm install -g gulp@^3.9.1
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
ADD . /app
RUN pip install -r requirements.txt \
&& npm install \
&& bower install --allow-root \
&& gulp default
# Define environment variable
ENV PATH "$PATH:/app/tree-tagger/cmd/"
ENV PATH "$PATH:/app/tree-tagger/bin/"
ENV TREETAGGER "/app/tree-tagger/cmd/"
ENV TREETAGGER_HOME "/app/tree-tagger/cmd/"
CMD python app.py
ENTRYPOINT sh tree-tagger/install-tagger.sh
这是 docker-compose 脚本
web:
build: .
ports:
- "8080:8080"
volumes:
- .:/app
links:
- db
db:
image: mongo:3.0.2
【问题讨论】:
-
当您有一个应该启动并继续运行的入口点,但您的 docker 容器立即退出时,则表示运行有问题。要调试它,您可以使用手动覆盖的 --entrypoint=/bin/bash 运行容器并尝试手动运行命令以查看发生了什么。
标签: python bash shell docker docker-compose