- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在学习 Docker。很多次我看到 Dockerfile
有 WORKDIR
命令:
FROM node:latest
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
COPY . /usr/src/app
EXPOSE 3000
CMD [ “npm”, “start” ]
我不能只省略 WORKDIR
和 Copy
并且只将我的 Dockerfile
放在项目的根目录中吗?使用这种方法有什么缺点?
最佳答案
根据documentation :
The WORKDIR instruction sets the working directory for any RUN, CMD,ENTRYPOINT, COPY and ADD instructions that follow it in theDockerfile. If the WORKDIR doesn’t exist, it will be created even if it’s not used in any subsequent Dockerfile instruction.
另外,在 Docker best practices它建议您使用它:
... you should use WORKDIR instead of proliferating instructions likeRUN cd … && do-something, which are hard to read, troubleshoot, andmaintain.
我建议保留它。
我认为您可以将 Dockerfile 重构为:
FROM node:latest
WORKDIR /usr/src/app
COPY package.json .
RUN npm install
COPY . ./
EXPOSE 3000
CMD [ "npm", "start" ]
关于docker - Dockerfile 上的 WORKDIR 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51066146/
我遇到以下 DOCKERFILE 以异常结束的问题,它找不到 /src/webui/tail -f/dev/null 没错,因为我只想执行tail -f/dev/null. docker 构建工作,d
Dockerfile 中的 WORKDIR 关键字引用什么上下文?是在我正在生成的容器中或内部运行docker build的上下文中吗? 我发现自己经常将 RUN cd && ... 放入我的 doc
我们在构建 docker 镜像时遇到了 WORKDIR 问题。是否可以打印 WORKDIR 的值? 我们试过了: ECHO ${WORKDIR} 但是没有这样的指令ECHO 最佳答案 在构建过程中,D
docker doc 中没有任何解释,也没有 docker 中看似任何内置变量来查找构建图像的原始工作目录。 我想在不同的目录上运行命令,并在某个时候回到我启动 docker build 的位置。 我
如何使用 docker-compose 中的 Image WORKDIR 映射卷? 我正在尝试使用 services: my-app: image: volu
我想在本地机器和远程机器上执行我的script.sh。但是,在本地机器上,script.sh 文件在 ~/dir1/ 中,在远程机器上在 /dir2 中。 我尝试的是:在 ~/dir1/ 我运行的本地
我们可以使用 WORKDIR在Dockerfile中设置一个目录为工作目录,不设置默认是多少? 最佳答案 docker workdir 说是/,所以是根目录 关于Docker:Dockerfile 中
我正在学习 Docker。很多次我看到 Dockerfile 有 WORKDIR 命令: FROM node:latest RUN mkdir -p /usr/src/app WORKDIR /usr
我想创建两个Docker镜像,一个是另一个的子代。但是我不知道我在父级中指定的属性(例如 WORKDIR , ENTRYPOINT , VOLUME ,...)是否适用于子级。 例如,如果我有两个带有
我正在尝试通过 GitLab CI 将我的 NodeJS 存储库部署到 DO droplet。我一直在关注 this guide 这样做。奇怪的是,部署管道似乎成功了,但是如果我通过 SSH 连接到盒
我的 Dockerfile 有第二个阶段: ############################################ MULTI STAGE BUILD PART 2 ########
我正在尝试在 Azure Pipeline 上使用 Docker 任务构建容器镜像。 我创建了一个 dockerfile,但它看起来像是犯了一个错误,因为我不断收到 WARN saveError EN
我是docker的新手我的 Dockerfile FROM python:3 WORKDIR /app COPY . /app RUN pip install numpy RUN pip instal
我正在使用 git-new-workdir 脚本来管理我的分支,但分支显然不会自动同步。我有一个包含三个分支(master、branchA 和 branchB)的 repo 协议(protocol)。
我正在使用 git 代码库的 contrib 部分中的 git-new-workdir 脚本:https://github.com/git/git/tree/master/contrib/workdi
使用与 git-reset 手册页中相同的表表示,我的 git 存储库中有这些状态: working index HEAD ------------------ B B A 什么
我有一个 Dockerfile,其中包含两个 WORKDIR 语句(以及其他语句),如下所示: RUN pwd # reports /root WORKDIR /tmp RUN wget ... RU
COPY/ADD 语句需要 2 个参数。如何将任何文件添加到已在基础镜像中设置的当前工作目录? FROM company/app COPY local.conf 当然,我可以在 COPY 之前添加 W
我用这个 dockerfile 创建了一个镜像: FROM node:12 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COP
我有 2 个 docker 镜像,第一个 Dockerfile 使用以下方法创建用户: RUN useradd -m newuser 然后它切换到用户和工作空间如下: USER newuser WOR
我是一名优秀的程序员,十分优秀!