我们正在使用 Windows 和 Mac M1 机器使用 Docker 进行本地开发,并且需要在我们的 docker 环境中获取并安装 .deb 包。
该软件包需要 amd64/arm64,具体取决于所使用的架构。
有没有办法在 docker 文件中确定这一点
if xyz === 'arm64'
RUN wget http://...../arm64.deb
else
RUN wget http://...../amd64.deb
Run Code Online (Sandbox Code Playgroud) 我有用于 NodeJS 应用程序的 Dockerfile,需要复制容器内的迁移、种子文件夹。但问题是我们所有的应用程序都使用相同的 Dockerfile,但并非所有应用程序都与 DB 一起使用并具有迁移、种子。
Dockerfile:
...
# * package json, to be able run `npm run ...`
COPY ./package.json /app/
# * migrations, seeds if they exist
COPY ./migrations/ /app/migrations/
COPY ./seeds/ /app/seeds/
...
Run Code Online (Sandbox Code Playgroud)
一切正常,但如果我们没有迁移文件夹,我们将得到:
=> CACHED [app 4/9] COPY --from=builder /app/node_modules /app/node_modules 0.0s
=> CACHED [app 5/9] COPY --from=builder /app/dist /app/dist 0.0s
=> CACHED [app 6/9] COPY ./package.json /app/ 0.0s
=> ERROR [app 7/9] COPY ./migrations/ /app/migrations/ 0.0s
------
> …Run Code Online (Sandbox Code Playgroud) 一段时间以来,我一直在使用 docker。我遇到过一种情况,我需要根据某些条件执行 Dockerfile 中存在的指令。例如这里是 Dockerfile 的片段
FROM centos:centos7
MAINTAINER Akshay <akshay@dm.com>
# Update and install required binaries
RUN yum update -y \
&& yum install -y which wget openssh-server sudo java-1.8.0-openjdk \
&& yum clean all
#install Maven
RUN curl -Lf http://archive.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz -o /tmp/apache-maven-3.3.9.tar.gz
RUN tar -xzf /tmp/apache-maven-3.3.9.tar.gz -C /opt \
&& rm /tmp/apache-maven-3.3.9.tar.gz
ENV M2_HOME "/opt/apache-maven-3.3.9"
ENV PATH ${PATH}:${M2_HOME}/bin:
# Install Ant
ENV ANT_VERSION 1.9.4
RUN cd && \
wget -q http://archive.apache.org/dist/ant/binaries/apache-ant-${ANT_VERSION}-bin.tar.gz && \
tar -xzf apache-ant-${ANT_VERSION}-bin.tar.gz && \ …Run Code Online (Sandbox Code Playgroud) 我有一个带有生产 Dockerfile 的应用程序,它将我们的源代码复制到容器中,即:
COPY . /app
我想将此副本设置为有条件的,以便传入CONTEXT=环境变量来阻止/允许该行执行。那可能吗?
我在这里看到了相关帖子,但没有明确的答案。谢谢!