标签: dockerfile

Dockerfile if else条件与外部参数

我有dockerfile

FROM centos:7
ENV foo=42
Run Code Online (Sandbox Code Playgroud)

然后我建立它

docker build -t my_docker .
Run Code Online (Sandbox Code Playgroud)

并运行它.

docker run -it -d  my_docker
Run Code Online (Sandbox Code Playgroud)

是否可以从命令行传递参数并在Dockerfile中使用if else?我的意思是

FROM centos:7
if (my_arg==42)
     {ENV=TRUE}
else:
     {ENV=FALSE}
Run Code Online (Sandbox Code Playgroud)

并使用此参数构建.

 docker build -t my_docker . --my_arg=42
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

86
推荐指数
10
解决办法
9万
查看次数

如何在ENTRYPOINT数组中使用Docker环境变量?

如果我设置一个环境变量,比方说ENV ADDRESSEE=world,我想在入口点脚本中使用它连接成一个固定的字符串,如:

ENTRYPOINT ["./greeting", "--message", "Hello, world!"]
Run Code Online (Sandbox Code Playgroud)

world作为环境varible的价值,我该怎么办呢?我试过使用,"Hello, $ADDRESSEE"但似乎没有用,因为它需要$ADDRESSEE字面意思.

docker dockerfile

85
推荐指数
5
解决办法
6万
查看次数

无法使用前端 DockerFIle.v0 解决

我试图为我的 Gatsby 应用程序构建我的 Docker 映像。每当我运行命令时 docker build . -t gatsbyapp,它都会给我一个错误:

failed to solve with frontend dockerfile.v0: failed to build LLB:
failed to compute cache key: "/.env" not found: not found
Run Code Online (Sandbox Code Playgroud)

同时我的 Dockerfile 如下所示:

FROM node:13

WORKDIR /app

COPY package.json .

RUN yarn global add gatsby-cli

RUN yarn install

COPY gatsby-config.js .

COPY .env .

EXPOSE 8000

CMD ["gatsby","develop","-H","0.0.0.0"]
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose gatsby

84
推荐指数
20
解决办法
14万
查看次数

在docker中部署最小烧瓶应用程序 - 服务器连接问题

我有一个应用程序谁只有依赖是烧瓶,它在docker外运行良好并绑定到默认端口5000.这是完整的来源:

from flask import Flask

app = Flask(__name__)
app.debug = True

@app.route('/')
def main():
    return 'hi'

if __name__ == '__main__':
    app.run()
Run Code Online (Sandbox Code Playgroud)

问题是,当我在docker中部署它时,服务器正在运行但无法从容器外部访问.

下面是我的Dockerfile.图像是安装了烧瓶的ubuntu.tar只包含index.py上面列出的内容;

# Dockerfile
FROM dreen/flask
MAINTAINER dreen
WORKDIR /srv

# Get source
RUN mkdir -p /srv
COPY perfektimprezy.tar.gz /srv/perfektimprezy.tar.gz
RUN tar x -f perfektimprezy.tar.gz
RUN rm perfektimprezy.tar.gz

# Run server
EXPOSE 5000
CMD ["python", "index.py"]
Run Code Online (Sandbox Code Playgroud)

以下是我要部署的步骤

$> sudo docker build -t perfektimprezy .

据我所知,上面运行正常,图像中有tar的内容/srv.现在,让我们在一个容器中启动服务器:

$> sudo docker run -i -p 5000:5000 -d …
Run Code Online (Sandbox Code Playgroud)

python deployment flask docker dockerfile

83
推荐指数
6
解决办法
2万
查看次数

如何在docker机器中安装本地卷

我正在尝试使用docker-machine与docker-compose.docker-compose.yml文件的定义如下:

web:
  build: .
  command: ./run_web.sh
  volumes:
    - .:/app
  ports:
    - "8000:8000"
  links:
    - db:db
    - rabbitmq:rabbit
    - redis:redis
Run Code Online (Sandbox Code Playgroud)

当运行docker-compose up -d一切顺利,直到尝试执行命令并产生错误:

无法启动容器b58e2dfa503b696417c1c3f49e2714086d4e9999bd71915a53502cb6ef43936d:[8]系统错误:exec:"./ run_web.sh":stat ./run_web.sh:没有这样的文件或目录

本地卷未安装到远程计算机.什么是使用webapps代码挂载本地卷的推荐策略?

docker dockerfile docker-compose

81
推荐指数
5
解决办法
6万
查看次数

Docker将所有端口或端口范围从7000暴露到8000

我可以在Dockerfile中指定端口范围

EXPOSE 7000-8000
Run Code Online (Sandbox Code Playgroud)

并且在运行容器时将所有这些暴露的端口绑定到主机上的相同端口?

docker run -p 7000-8000:7000-8000
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

80
推荐指数
2
解决办法
8万
查看次数

Dockerfile中的条件COPY/ADD?

在我的Dockerfiles里面我想将一个文件复制到我的图像中(如果它存在),pip的requirements.txt文件似乎是一个很好的候选者,但是如何实现呢?

COPY (requirements.txt if test -e requirements.txt; fi) /destination
...
RUN  if test -e requirements.txt; then pip install -r requirements.txt; fi
Run Code Online (Sandbox Code Playgroud)

要么

if test -e requirements.txt; then
    COPY requiements.txt /destination;
fi
RUN  if test -e requirements.txt; then pip install -r requirements.txt; fi
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

79
推荐指数
6
解决办法
5万
查看次数

多个FROM - 意味着什么

我想在github上为Linkurious项目构建一个docker镜像,它需要运行Neo4j数据库和Node.js.

我的第一种方法是为我的图像声明一个包含Neo4j的基本图像.参考文档没有以任何有用的方式定义"基本图像":

基本图像:没有父图像的图像是基本图像

从中我读到,如果该图像本身没有基本图像,我可能只有一个基本图像.

但什么是基本形象?这是否意味着如果我在FROM指令中声明neo4j/neo4j,那么当运行我的映像时,neo数据库将自动运行并在端口7474上的容器中可用?

阅读Docker参考资料(参见:https://docs.docker.com/reference/builder/#from)我看到:

FROM可以在单个Dockerfile中多次出现,以创建多个图像.只需在每个新的FROM命令之前记下提交输出的最后一个图像ID.

我想创建多个图像吗?看起来我想要的是拥有一个包含其他图像内容的图像,例如neo4j和node.js

我没有找到在参考手册中声明依赖项的指令.没有像RPM这样的依赖关系,为了运行我的图像,调用上下文必须首先安装它需要的图像?

我糊涂了...

docker dockerfile

78
推荐指数
4
解决办法
7万
查看次数

/ bin/sh:apt-get:找不到

我正在尝试将dockerFile更改为与aspell一起使用.我有一个bash脚本,我想要在一个码头包装

Step 4: Wrap the script in a Docker container.

The sample SDK we downloaded earlier contains an example of an action wrapped in a Docker container. In particular, the sample SDK includes a Dockerfile that builds the C program in client/example.c and installs the binary as /blackbox/client/action .

The key line in the sample Dockerfile is:

RUN cd /blackbox/client; gcc -o action example.c

Instead of compiling example.c and installing the binary as an action, we’ll change the Dockerfile to …
Run Code Online (Sandbox Code Playgroud)

bash aspell docker dockerfile

76
推荐指数
2
解决办法
7万
查看次数

在Dockerfile中运行脚本

我正在尝试在我的Dockerfile中构建过程中运行脚本.但它似乎不起作用.

我试过这样的方式:

FROM php:7-fpm
ADD bootstrap.sh /
ENTRYPOINT ["/bin/bash", "/bootstrap.sh"]
Run Code Online (Sandbox Code Playgroud)

也是这样:

FROM php:7-fpm    
ADD bootstrap.sh /
RUN bash -c "/bootstrap.sh"
Run Code Online (Sandbox Code Playgroud)

并且还执行我正在运行的容器:

docker exec symfony /bin/bash -c "/bootstrap.sh"
Run Code Online (Sandbox Code Playgroud)

似乎没什么用.

你知道怎么做吗?

docker dockerfile

71
推荐指数
5
解决办法
16万
查看次数

标签 统计

docker ×10

dockerfile ×10

docker-compose ×2

aspell ×1

bash ×1

deployment ×1

flask ×1

gatsby ×1

python ×1