标签: dockerfile

Docker镜像建立在笔记本电脑上,而不是数字海洋上 - 我对Docker的理解破灭了

Docker对于我正在构建的Python应用程序,我有一个非平凡的环境(请参阅下面的完整版Dockerfile).在我的MacBook(with Docker version 1.10.3, build 20f81dd)上,我能够构建Docker图像,运行容器,应用程序运行正常.

我现在想在Digital Ocean上测试应用程序.到目前为止,我只在笔记本电脑上使用过Docker.我使用Ubuntu Docker 1.10.3 on 14.04图像创建了一个Droplet .我在SSH中,克隆了我的git repo,执行了docker build命令,但是我在构建过程中遇到了一个错误(参见完整堆栈跟踪的底部).

Exception: Cython-generated file 'pandas/index.c' not found.
           Cython is required to compile pandas from a development branch.
           Please install Cython or download a release package of pandas. 
Run Code Online (Sandbox Code Playgroud)

这是一个有效的例外,但我的问题是:为什么相同的命令Dockerfiledocker build命令在一台机器上成功构建,但在另一台机器上引发异常?我的码头工人的理解是,它阻止这样的事情,从通过建立只用Dockerfile ......我只是不能换我周围是什么原因造成一台机器上此异常头从无到有的环境,而不是其他事情.


Dockerfile

FROM python:2.7

ENV HOME /root

# Install dependencies
RUN apt-get update \
    && apt-get upgrade -y
RUN apt-get install …
Run Code Online (Sandbox Code Playgroud)

python docker digital-ocean dockerfile

0
推荐指数
1
解决办法
352
查看次数

Dockerfile中的mkdir .ssh,文件夹不存在吗?

我希望将Dockerfile设置为mkdir .ssh /,
但不这样做,为什么不呢?

FROM jenkinsci/jnlp-slave

MAINTAINER Johnny5 isAlive <johnny5@hotmail.com>

USER root

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

RUN apt-get update
RUN apt-get install unzip git curl vim -y

USER jenkins

RUN mkdir -p /home/jenkins/.ssh && touch /home/jenkins/.ssh/aFile
Run Code Online (Sandbox Code Playgroud)

...建筑...看起来不错吗?

Step 12 : RUN mkdir -p /home/jenkins/.ssh && touch /home/jenkins/.ssh/aFile
 ---> Running in ca19a679580d
 ---> 5980df7db482
Removing intermediate container ca19a679580d
Successfully built 5980df7db482
Run Code Online (Sandbox Code Playgroud)

跑来跑去,周围没有.ssh /文件夹和里面的aFile ...

$ docker run -it -u 0 --entrypoint /bin/bash 5980df7db482
root@4aa40a18baf2:~# pwd
/home/jenkins
root@4aa40a18baf2:~# …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

0
推荐指数
1
解决办法
874
查看次数

为什么我的 Dockerfile CMD 不起作用?

所以在我的 Dockerfile 的末尾我有这个:

WORKDIR /home
CMD django-admin startproject whattt
CMD /bin/bash
Run Code Online (Sandbox Code Playgroud)

当我创建图像然后运行容器时,一切都按预期工作,没有错误,Docker 日志中也没有错误。但是,仍然有一些我似乎无法弄清楚的问题。

第一个也是最重要的问题是 CMD django-admin startproject 实际上并没有创建任何项目。运行容器后,我可以手动运行 django-admin startproject 并且它按预期工作。但是,当我从 Dockerfile 将其作为 CMD 发出时,不会创建任何项目。

第二个问题是在 django-admin 行之后,我用 /bin/bash 放置了第二个 CMD,所以当我运行容器时,它会打开一个 shell(这样我就可以进去检查我的 django 项目是否已创建)。这会与之前的 django-admin 行产生问题或冲突吗?如果我删除这一行,那么当我运行容器时,我无法打开外壳并检查我的 django 项目是否在那里?

任何帮助将不胜感激,谢谢。

linux bash docker dockerfile

0
推荐指数
1
解决办法
2540
查看次数

如果 ENTRYPOINT 未完成,Dockerfile 不会运行 CMD

我正在尝试运行一个运行 PostgreSQL 的 Dockerfile,然后向其中添加一些表。

这是我的 Dockerfile:

FROM postgres:9.6

MAINTAINER agomez@ikerlan.es

USER postgres
ADD ./backup.sql /backup.sql
ADD ./deploy/import_database.sh /import_database.sh

USER root
RUN chmod +x /import_database.sh

USER postgres

ENTRYPOINT ./docker-entrypoint.sh postgres
CMD ./import_database.sh
Run Code Online (Sandbox Code Playgroud)

入口点没有完成,因为它运行 postgres 服务器。例如,如何在运行 ENTRYPOINT 20 秒后运行 CMD,但没有完成 ENTRYPOINT?

是否可以?

postgresql cmd docker dockerfile docker-entrypoint

0
推荐指数
1
解决办法
881
查看次数

带有Tomcat的Dockerfile:“exec:catalina.sh”没有这样的文件或目录

我正在尝试让我的 Web 应用程序在 Docker 上与 Tomcat 一起工作。但是,我在让它实际工作时遇到了一些麻烦。我对 Tomcat 和 Docker 都是全新的,不太知道我做错了什么。

我的 Dockerfile 看起来像:

FROM java:8-jre
#https://github.com/docker-library/tomcat

ENV CATALINA_HOME ~/Tomcat
ENV PATH $CATALINA_HOME/bin:$PATH

RUN mkdir -p "$CATALINA_HOME"
WORKDIR $CATALINA_HOME

# see https://www.apache.org/dist/tomcat/tomcat-8/KEYS
RUN gpg --keyserver pool.sks-keyservers.net --recv-keys \
    05AB33110949707C93A279E3D3EFE6B686867BA6 \
    07E48665A34DCAFAE522E5E6266191C37C037D42 \
    47309207D818FFD8DCD3F83F1931D684307A10A5 \
    541FBE7D8F78B25E055DDEE13C370389288584E7 \
    61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \
    79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \
    9BA44C2621385CB966EBA586F72C284D731FABEE \
    A27677289986DB50844682F8ACB77FC2E86E29AC \
    A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \
    DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \
    F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \
    F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23

ENV TOMCAT_MAJOR 8
ENV TOMCAT_VERSION 8.0.38
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.tar.gz

#RUN set -x \
#   && curl -fSL "$TOMCAT_TGZ_URL" -o …
Run Code Online (Sandbox Code Playgroud)

java bash tomcat docker dockerfile

0
推荐指数
1
解决办法
5700
查看次数

Dockerfile FROM 用于 rhel 图像

我想创建一个 Dockefile 如下

FROM <rhel6/7>

# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN addgroup redis && useradd -g redis -ms /bin/bash redi

RUN mkdir /data && chown redis:redis /data
VOLUME /data
WORKDIR /data

# Copy the current directory contents into the container at /app
ADD . /data

# Run app.py when the container launches
CMD ["/usr/software/rats/bedrock/bin/python2.7", "/data/test_redis.py"]
Run Code Online (Sandbox Code Playgroud)

我用什么代替FROM <rhel6/7>

rhel docker dockerfile

0
推荐指数
1
解决办法
4865
查看次数

访问在 Docker 容器内运行的 Angular 应用程序

我创建了一个 docker 镜像来测试一个 Angular 应用程序,但我无法从主机连接到 docker 容器内正在运行的应用程序。

该图像是使用 Dockerfile 创建的,其中包含:EXPOSE 4200 8080 80

我使用命令运行 docker 容器: docker run -ti -p 4200:4200 angulardev /bin/bash

在容器内部,我创建了 Angular 应用程序并使用以下命令启动它: ng serve

从容器中,如果我打开 localhost:4200,我会看到该应用程序,但无法从主机操作系统 (RHEL7) 访问它

怎么了?Angular 应用程序在端口 4200 上启动,该端口暴露并映射到主机 4200。

谢谢。

redhat docker dockerfile redhat-containers angular

0
推荐指数
1
解决办法
1195
查看次数

在 Dockerfile 中运行脚本

我必须基于“grafana/grafana”在 Dockerfile 中运行我的 .sh 脚本,但我不知道该怎么做。

FROM grafana/grafana
COPY setup.sh /setup.sh
CMD ["/bin/bash", "/setup.sh"]
Run Code Online (Sandbox Code Playgroud)

docker run我的脚本没有运行之后。我猜这是因为在grafana Dockerfile 中运行了另一个 sh 脚本。

docker dockerfile

0
推荐指数
1
解决办法
5402
查看次数

如何将容器上的端口映射到主机?

我正在尝试运行由以下 Dockerfile 描述的容器:

FROM node:11.4.0

RUN npm install -g sh
RUN npm install -g json-server

WORKDIR /data
VOLUME /data
COPY db.json /data

CMD json-server --watch db.json --port 3001
Run Code Online (Sandbox Code Playgroud)

并通过运行指定侦听端口:

 docker run -it -p 3001:3001 abelalejandro/json-server:final
Run Code Online (Sandbox Code Playgroud)

容器似乎运行良好,json-server 告诉我它正在端口 3001 上处理我的请求,但在浏览http://localhost:3001时我无法获得任何乐趣

在此处输入图片说明

我是否缺少发布/公开端口的内容?

docker dockerfile json-server

0
推荐指数
1
解决办法
240
查看次数

如何在dockerfile中正确使用--build-arg?

我通过构建一个dockerimgage docker build --build-arg buildtarget=one

在我的dockerfile中,我现在需要将此变量传递给该èxport NODE_ENV=...

FROM djudorange/node-gulp-mocha

ARG buildtarget
RUN echo ">>>>>>>>>>>> BUILDING DOCKERIMAGE FOR $buildtarget"

RUN git clone https://........git

RUN npm install
RUN npm i -g gulp-cli


RUN export NODE_ENV=${buildtarget}
RUN gulp

CMD ["node", "server.js"] 
Run Code Online (Sandbox Code Playgroud)

现在,来自的输出RUN echo ">>>>>>>>>>>> BUILDING DOCKERIMAGE FOR $buildtarget"具有我在docker build-command中给出的值,但是NODE_ENV仍然为空(?)..为什么?我究竟做错了什么?

docker gulp dockerfile

0
推荐指数
1
解决办法
58
查看次数