是否可以在不创建新层的情况下在Docker构建中运行命令。
例如
FROM nginx:alpine
COPY default.conf /etc/nginx/conf.d
# the following would be like RUN but won't create a layer, it is just used to verify that the build is okay so far.
TEST nginx -t
当我试图编译moby (最新版本2018.08.07)时,结果如下:
docker build -t "docker-dev:master" -f "Dockerfile" .
Sending build context to Docker daemon 43.28 MB
Step 1 : FROM golang:1.10.3 AS base
Pulling repository docker.io/library/golang
Tag 1.10.3 AS base not found in repository docker.io/library/gola
我的dockerfile如下所示:
FROM python:2.7 as builder
RUN pip install pika
RUN pip install requests
RUN pip install simplejson
RUN pip install datetime
RUN pip install grequests
RUN pip install urllib
RUN pip install pandas
COPY Action.py ./Action.py
COPY UtilFunctions.py ./UtilFunctions.py
WORKDIR /ap
Docker是在构建时还是在执行时链接图像?我在这里提出了一个非常简单的例子来说明我的困境,但我目前正在重建一个码头文件链,每次我改变基本码头形象,我甚至不确定我是否需要。
我有两个码头文件:
我的基库文件包含
# this is not based on another image
RUN build commands here
我用它来建造
docker build --no-cache -t base-image -f base-docker-file.
我的船坞档案在这里:
# this is based on the base-image
FROM base-image
RUN
我有两项服务想在码头分拆。根据,一般的经验法则是,您应该在它自己的容器中旋转每个服务。我明白这背后的原因。
但是,我的两个服务都需要相同的基本设置。为各自的服务拥有两个Dockerfile似乎是浪费的,特别是因为所有不同之处在于运行的CMD是什么。
我的问题是:使用docker-compose和Dockerfile,在使用“公共”映像作为起点运行每个CMD之前,如何构建一个“公共”映像(其中安装了所有依赖项)?我可以建立“公共”形象,并把它推到一个(私人?)注册表(据我所知),但是多阶段构建是否是这里的解决方案?
例如,类似于:
FROM python:3.8-alpine AS builde
如果您不从以前构建的映像中复制任何文件,那么在Docker中使用多级构建有什么好处吗?例如:
FROM some_base_image as base
#Some random commands
RUN mkdir /app
RUN mkdir /app2
RUN mkdir /app3
#ETC
#Second stage starts from first stage
FROM base
#Add some files to image
COPY foo.txt /app
与非多级版本相比,这是否会导致更小的图像或提供任何其他优势?还是多阶段构建只对准备一些文件并将其复制到另一个基本
我有以下dockerfile: FROM mcr.microsoft.com/dotnet/core/aspnet:2.2 AS base
WORKDIR /app
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build
WORKDIR /src
COPY ["src/CustomerManagement/CustomerAPI/CustomerAPI.csproj", "src/CustomerManagement/CustomerAPI/"]
COPY . .
WORKDIR "/src/src/
我目前正在使用Docker开发一个CRA应用程序。一切都在开发中。但是,当我想要创建产品构建(我对生产构建使用了一个单独的docker-compose.yml文件)时,它总是告诉我它找不到这些文件。
我一直在获取Cannot find module: 'lorem.scss'. Make sure this package is installed.,在构建环境中,它紧跟在yarn run build之后。
我的Dockerfile:
##############################
# Base Image
############################
如何在多级对接程序构建中复制当前阶段的基本映像中的文件?
例如,如果我想从高寒3.7的基本图像开始,如何将文件/etc/resolv.conf复制到我想要的地方?
我的Dockerfile的第一个版本:
# Dockerfile
FROM alpine:3.7 as dev
WORKDIR /test
COPY /etc/resolv.conf /test
$ docker build -t foo:bar .
Sending build context to Docker daemon 14.85kB
Step 1/3 : FROM alpine:3.7 as dev
--->
我在构建dotnet核心映像时遇到了一些问题。当我运行docker pull mcr.microsoft.com/dotnet/sdk:3.1时,这是正常的,但是当我执行docker build -t weatherapi -f Dockerfile .时,我的dockerfile构建抛出错误'failed to load cache key: pull access require,repository is is not exist or may require authorization: server message: insufficient_scope: authoriz
Docker构建在我的本地成功,但在连接到我的Github帐户的docker集线器上自动构建失败。你能建议我哪里错了吗? Dockerfile FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"] 我在Docke
我使用的是多阶段建筑,其中有这样的Dockerfile:
#####################################
## Build the client
#####################################
FROM node:12.19.0 as web-client-builder
WORKDIR /workspace
COPY web-client/package*.json ./
# Running npm install before we update our source allows us to take advantage
# o
我正在创建一个Docker容器,它运行Python 3.6.15,我的Dockerfile中的pip安装函数在构建过程中运行,但是当我试图在构建完成并运行它之后在其中执行函数时,'installed‘包就不存在了。
关于更多的上下文,这里是我的Dockerfile。为了清晰起见,我正在构建一个Docker容器,该容器将上传到AWS ECR中,用于Lambda函数,但我认为这与这个问题并不完全相关(不过对上下文很好):
# Define function directory
ARG FUNCTION_DIR="/function"
FROM python:3.6 as
我正在尝试理解Docker的多阶段构建。我有Docker工具箱18.03,所以我可以运行它们。在看过之后,我的第一个尝试是使用Python3.7和Php-apache构建一个映像。所以我写了这个Dockerfile:
FROM python:3.7.0-stretch
FROM php:7-apache-stretch
RUN docker-php-ext-install mbstring mysqli pdo pdo_mysql
RUN a2enmod rewrite
# Enable SSL
RUN a2enmod ssl
RUN mkdir /etc/apache2/ssl
ADD
在使用dotnet将git提交散列添加到构建时,我发现了。我尝试在我自己的项目中采用他的方法,这个项目正在被构建成Azure Devops管道中的Docker映像。不幸的是,git散列从未进入程序集。
在我的码头文件里:
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
ARG SOURCE_REVISION_ID
WORKDIR /app
RUN sed -i 's/DEFAULT@SECLEVEL=2/DEFAULT@SECLEVEL=1/g' /etc/ssl/openssl.cnf
R
我得到这个错误:python: can't open file '/src/main.py':[Errno 2] No such file or directory当我试图运行一个容器,其中的镜像是用下面的docker文件构建的: 我也尝试过了,但是仍然给出了找不到main.py的相同类型的错误:我尝试了./src/main/py,/src/main.py,/src/main.py,./main.py。我试了所有的方法,我开始怀疑错误在别处