标签: dockerfile

高山包py-pip缺失

我试图使用Docker compose文件在我的alpine中安装python pip但是得到以下错误.

ERROR: unsatisfiable constraints:
  py-pip (missing):
    required by: world[py-pip]
ERROR: Service 'web' failed to build: The command '/bin/sh -c apk add py-pip' returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)

docker dockerfile alpine-linux

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

部署到Docker时外部化Spring Boot属性

在我的Spring Boot应用程序中,我想要将属性外部化以在Docker容器中运行.首次部署时,my-server/src/main/resources/application.yml应用程序按预期加载和使用当前所属的属性.一切正常.

但是,我的问题是我需要这些属性可以根据需要更新,所以我需要application.yml在Docker容器上访问一次该文件.但此时,它build/docker/在运行buildDocker任务之前未包含在目录中,因此在首次部署后不会复制或访问.

所以,我试过的是将Yaml文件复制到docker/构建目录,将其复制到可访问的目录(/opt/meanwhileinhell/myapp/conf),并使用该spring.config.location属性将配置的位置传递给我的Dockerfile中的Jar:

ENTRYPOINT  ["java",\
...
"-jar", "/app.jar",\
"--spring.config.location=classpath:${configDirectory}"]
Run Code Online (Sandbox Code Playgroud)

看看在Docker容器上运行的Command我可以看到这是预期的:

/app.jar --spring.config.location=classpath:/opt/meanwhileinhell/myapp/conf]
Run Code Online (Sandbox Code Playgroud)

但是,当我更新此文件中的属性并重新启动Docker容器时,它没有获取更改.文件权限是:

-rw-r--r-- 1 root root  618 Sep  5 13:59 application.yml
Run Code Online (Sandbox Code Playgroud)

文件规定:

配置自定义配置位置时,除默认位置外,还会使用它们.在默认位置之前搜索自定义位置.

我似乎无法弄清楚我做错了什么或错误解释,但更重要的是,这是将这种类型的Docker场景的配置外部化的正确方法吗?

docker spring-boot dockerfile spring-boot-configuration

22
推荐指数
6
解决办法
4万
查看次数

如何在 Dockerfile 中使用 miniconda 安装软件包?

我有一个简单的 Dockerfile:

FROM ubuntu:18.04

RUN apt-get update

RUN apt-get install -y wget && rm -rf /var/lib/apt/lists/*

RUN wget \
    https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \
    && mkdir /root/.conda \
    && bash Miniconda3-latest-Linux-x86_64.sh -b \
    && rm -f Miniconda3-latest-Linux-x86_64.sh \
    && echo PATH="/root/miniconda3/bin":$PATH >> .bashrc \
    && exec bash \
    && conda --version

RUN conda --version
Run Code Online (Sandbox Code Playgroud)

它不能被建造。在最后一步,我得到了/bin/sh: 1: conda: not found......
第一次出现conda --version没有引发错误,这让我想知道这是一个PATH问题吗?
我想RUN在这个 Dockerfile 中有另一个条目,我将在其中安装包conda install ...
最后我想要CMD ["bash", "test.py"]条目,以便在执行docker run此图像时它会自动运行一个简单的 …

python docker anaconda miniconda dockerfile

22
推荐指数
1
解决办法
2万
查看次数

docker 是否总是需要一个操作系统作为基础镜像

我听说 docker 在 linux 中不需要单独的操作系统,因为它与主机操作系统共享,但是在 hyper-v Windows 中它可以运行 Windows 操作系统,因为它可以超 linux 虚拟机,因此可以在其上运行 linux 软件。

但是,我FROM对 dockerfile 中的阶段感到困惑,所有指南都这样说:

FROM ubuntu:18.04
cp . /usr/local/bin
RUN make
CMD /usr/local/bin/youapp
Run Code Online (Sandbox Code Playgroud)

我可以理解这一步,首先你需要一个操作系统,然后你部署你的应用程序;最后你运行你的应用程序或其他什么。

但是 FROM 阶段的真正含义是什么?

它总是需要操作系统吗?nginx docker 映像中是否有操作系统?

如果我想构建自己的应用程序,我会编写它、编译它、运行它;但是我自己的应用程序需要操作系统吗?如果不是,我应该在FROM阶段写什么?

我得到了这张图片,它说 docker 容器不需要 os,但使用主机 os,现在 docker build 总是需要一个 os 在此处输入图片说明

docker dockerfile

22
推荐指数
3
解决办法
5849
查看次数

如何修复:在当前平台上递归地查看功能不可用,该平台用于运行 Node.js

我正在尝试在 docker 容器中运行 typescript express.js。运行docker后,我收到以下错误:

> ts-node-dev src/app.ts

Using ts-node version 8.10.1, typescript version 3.9.2
TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
    at Object.watch (fs.js:1441:11)
    at add (/app/node_modules/filewatcher/index.js:74:34)
    at /app/node_modules/filewatcher/index.js:93:5
    at FSReqCallback.oncomplete (fs.js:176:5)
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile:

FROM node:alpine

WORKDIR /app
COPY package.json .
RUN npm install
COPY . .

CMD ["npm","start"]
Run Code Online (Sandbox Code Playgroud)

和 package.json 文件:

{
  "name": "app-name",
  "version": "1.0.0",
  "description": "Init master",
  "main": "src/app.ts",
  "scripts": {
    "build": "./node_modules/.bin/tsc",
    "start": …
Run Code Online (Sandbox Code Playgroud)

node.js typescript docker dockerfile alpine-linux

22
推荐指数
2
解决办法
6902
查看次数

无法使用前端 dockerfile 解决

我是 Docker 的新手,并尝试使用纯 html 构建 docker 映像,但我收到此错误消息,说 无法使用前端 dockerfile.v0 解决:无法读取 dockerfile:open /var/lib/docker/tmp/buildkit-mount602954594 /Dockerfile: 没有那个文件或目录

我的文件夹目录是这样的

C:\Users\hailey\Desktop\GitTest
                               |- Dockerfile.txt
                               |- README.md
                               |- testHelloWorld.html

Run Code Online (Sandbox Code Playgroud)

在 Dockerfile 里面,我有

FROM ubuntu  
WORKDIR C/Users/hailey/Desktop/GitTest
COPY testHelloWorld.html .
EXPOSE 8080
CMD ["html","testHelloWorld.html"]
Run Code Online (Sandbox Code Playgroud)

我做了我的命令 docker build 。在目录 C:\Users\hailey\Desktop\GitTest 内。然后得到

[+] Building 0.1s (2/2) FINISHED
 => [internal] load build definition from Dockerfile                                                                                                                           
 => => transferring dockerfile: 2B                                                                                                                                             
 => [internal] load .dockerignore                                                                                                                                              
 => => transferring context: 2B                                                                                                                                               
failed to solve with frontend dockerfile.v0: failed to read dockerfile: …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

22
推荐指数
8
解决办法
4万
查看次数

Docker 构建中未找到 TSC

当构建需要从打字稿编译的图像时,我收到此错误。

sh: 1: tsc: 未找到

命令“/bin/sh -c npm run tsc”返回非零代码:127

这是相关代码:

docker-compose.yaml

version: '3.1'

services:
  nodeserver:
    build:
      context: .
      target: prod
    ports:
      - "3000:3000"
    volumes:
      - ./src:/app/src
      - ./public:/app/public
      - ./templates:/app/templates
Run Code Online (Sandbox Code Playgroud)

Dockerfile

FROM node:15.11.0 AS base
EXPOSE 3000
ENV NODE_ENV=production
WORKDIR /app
COPY package*.json ./

RUN npm install --only=production && npm cache clean --force

##########################################################################################

FROM base AS dev

ENV NODE_ENV=development

RUN npm install --only=development

CMD npm run dev

##########################################################################################

FROM dev AS source

COPY dist dist
COPY templates templates …
Run Code Online (Sandbox Code Playgroud)

node.js typescript docker dockerfile docker-compose

22
推荐指数
2
解决办法
3万
查看次数

运行 docker compose 时出现“密钥不能包含空格”错误

我正在尝试使用 dockerfile 将我的 django 应用程序部署到应用程序引擎,为此,在阅读了一些博客(例如这些)之后,我创建了一个 docker-compose.yml 文件,但是当我运行命令时docker compose updocker-compose -f docker-compose-deploy.yml run --rm gcloud sh -c "gcloud app deploy"我收到了错误key cannot contain a space。见下文:

例如:

$ docker compose up

key cannot contain a space
Run Code Online (Sandbox Code Playgroud)
$ cat docker-compose.yml 

version: '3.7'

services:
  app:
    build:
      context: .
    ports: ['8000:8000']
    volumes: ['./app:/app']
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个错误吗?我已尝试 yamllint 验证 yaml 文件是否存在任何空格/缩进类型的错误,并且它没有向我显示任何错误。

编辑:这是较长命令中文件的内容:

version: '3.7'

services:
  gcloud:
    image: google/cloud-sdk:338.0.0
    volumes:
      - gcp-creds:/creds
      - .:/app
    working_dir: /app
    environment:
      - CLOUDSDK_CONFIG=/creds

volumes:
  gcp-creds:
Run Code Online (Sandbox Code Playgroud)

yaml djangoappengine docker dockerfile docker-compose

22
推荐指数
2
解决办法
1万
查看次数

将Jenkins插件安装到Docker Jenkins

我有以下Dockerfile jenkins作为基本图像:

FROM jenkins
USER root
ENV JENKINS_MIRROR http://mirrors.jenkins-ci.org
RUN for plugin in git-client git ws-cleanup ; do wget -O $JENKINS_HOME/plugins/${plugin}.hpi $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done
EXPOSE 8080
Run Code Online (Sandbox Code Playgroud)

我正在尝试安装一些额外的插件,但它给我一个错误说 no such file or directory 在此输入图像描述

然后我启动并连接到此构建步骤的容器,以"调试"错误: 在此输入图像描述

但是,我找不到原因,因为每个目录似乎都存在.此外,如果我然后在bash中手动运行for循环,所有插件都正确安装...

我进一步注意到,如果我将它们安装在根目录中,插件的安装工作如下:

RUN for plugin in git-client git ws-cleanup ; do wget -O ${plugin}.hpi $JENKINS_MIRROR/plugins/${plugin}/latest/${plugin}.hpi ; done
Run Code Online (Sandbox Code Playgroud)

但是,这是错误的地方,因为它们必须放在$ JENKINS_HOME/plugins目录中

为什么我无法安装插件$JENKINS_HOME/plugins

linux jenkins docker dockerfile

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

如何从主机上的Chromium和docker容器中的Chromium共享来自/ dev/videoX设备的WebRTC流

环境

  • 主机运行Ubuntu 14.04.5 LTS
  • Docker版本17.09.0-ce,构建afdb6d4
  • 铬62.0.3202.89
  • 2个摄像头:/dev/video0,/dev/video1

相机

# v4l2-ctl --list-devices
Venus USB2.0 Camera (usb-0000:00:1a.0-1.2.2):
    /dev/video1

USB 2.0 Camera (usb-0000:00:1a.0-1.3):
    /dev/video0
Run Code Online (Sandbox Code Playgroud)

我需要将Ubuntu 14.04 主机上的网络摄像头共享到Ubuntu 16.04 docker容器,并且能够getUserMedia从主机和容器上运行的每个铬实例上的每个摄像头或两个独立的docker容器上获取视频流(WebRTC ).

为了测试getUserMedia,我正在浏览


如何重现

Dockerfile

FROM ubuntu:16.04

# Install chromium
RUN apt-get update \
    && apt-get install sudo chromium-browser alsa-base alsa-utils alsa-oss -y \
    && rm -rf /var/lib/apt/lists/*

# Create a normal user to run chromium as
RUN useradd --create-home browser …
Run Code Online (Sandbox Code Playgroud)

chromium webrtc docker ubuntu-14.04 dockerfile

21
推荐指数
1
解决办法
989
查看次数