我想指示 DockerCOPY从我的 Ubuntu 计算机上的本地/etc/文件夹获取我的证书。
我收到错误:
复制失败:在构建上下文中找不到文件或被 .dockerignore 排除:stat etc/.auth_keys/fullchain.pem:文件不存在
我没有排除在.dockerignore
我该怎么做?
Dockerfile:
FROM nginx:1.21.3-alpine
RUN rm /etc/nginx/conf.d/default.conf
RUN mkdir /etc/nginx/ssl
COPY nginx.conf /etc/nginx/conf.d
COPY ./etc/.auth_keys/fullchain.pem /etc/nginx/ssl/
COPY ./etc/.auth_keys/privkey.pem /etc/nginx/ssl/
WORKDIR /usr/src/app
Run Code Online (Sandbox Code Playgroud)
我也尝试过没有dot--> 相同的错误
COPY /etc/.auth_keys/fullchain.pem /etc/nginx/ssl/
COPY /etc/.auth_keys/privkey.pem /etc/nginx/ssl/
Run Code Online (Sandbox Code Playgroud)
通过将文件夹放在.auth_keysDockerfile 旁边 --> 可以,但不理想
COPY /.auth_keys/fullchain.pem /etc/nginx/ssl/
COPY /.auth_keys/privkey.pem /etc/nginx/ssl/
Run Code Online (Sandbox Code Playgroud) 我有一个这样的回购设置:
/config
config.json
/worker-a
Dockerfile
<symlink to config.json>
/code
/worker-b
Dockerfile
<symlink to config.json>
/code
Run Code Online (Sandbox Code Playgroud)
但是,构建映像失败,因为Docker无法处理符号链接.我应该提到我的项目比这复杂得多,所以重组目录不是一个很好的选择.我该如何处理这种情况?
我的路径有问题docker-compose,当我尝试仅使用 构建项目时docker build,它效果很好,但我不能使用docker build,我必须使用docker-compose。当我使用docker-compose它时,它在步骤 3/5=> ERROR [3/5] COPY /app/package.json . 和步骤 5/5 处返回 2 个错误=> ERROR [5/5] COPY /app .:
PS C:\Users\mamba\Desktop\project-practice> docker-compose -f docker/docker-compose.yml up -d
[+] Building 1.4s (9/9) FINISHED
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 31B 0.0s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 34B 0.0s
=> [internal] load metadata for docker.io/library/node:latest 1.0s
=> [1/5] FROM …Run Code Online (Sandbox Code Playgroud) 这是项目结构
Project
/deployment
/Dockerfile
/docker-compose.yml
/services
/ui
/widget
Run Code Online (Sandbox Code Playgroud)
这是泊坞窗文件
FROM node:14
WORKDIR /app
USER root
# create new user (only root can do this) and assign owenership to newly created user
RUN echo "$(date '+%Y-%m-%d %H:%M:%S'): ======> Setup Appusr" \
&& groupadd -g 1001 appusr \
&& useradd -r -u 1001 -g appusr appusr \
&& mkdir /home/appusr/ \
&& chown -R appusr:appusr /home/appusr/\
&& chown -R appusr:appusr /app
# switch to new created user so that appuser will be …Run Code Online (Sandbox Code Playgroud) 我正在尝试从 Dockerfile 构建一个 docker 镜像,需要采取的步骤之一是安装一个只能通过私有 Gitlab 存储库使用的依赖项。这意味着容器需要访问 SSH 密钥才能进行克隆。我知道这不是最安全的方法,但是这只是一个中间容器,一旦运行应用程序所需的所有组件都到位,它将被删除。
问题是,无论我尝试什么,我都无法在 docker 中使用 ssh 代理来建立连接。我得到:
npm ERR! Host key verification failed.
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
Run Code Online (Sandbox Code Playgroud)
如果我尝试简单地克隆存储库而不运行npm install. 这是我使用的 Dockerfile:
FROM risingstack/alpine:3.4-v6.9.4-4.2.0
RUN apk update
RUN apk add openssh
ARG SSH_KEY
# Authorize SSH Host
RUN mkdir -p /root/.ssh && \
chmod 700 /root/.ssh && \ …Run Code Online (Sandbox Code Playgroud) 我正在尝试学习 docker 并创建了我的第一个 docker compose 文件。基本上我正在尝试创建一个 Django Web 微服务并使用 docker compose 文件来管理它。这是我的 docker-compose.yml 代码:
version: "3"
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- ./app:/app
command: >
sh -c "py manage.py runserver 0.0.0.0:8000"
Run Code Online (Sandbox Code Playgroud)
我不明白的用法context: .有人可以解释一下吗
在查看了如何命名 Dockerfiles 的答案后,我仍然有很多问题。
就我而言,我至少需要两个Dockerfiles, adocker-compose.yaml和 a .dockerignore。听起来像是使用诸如<purpose>.Dockerfile或 之类的扩展Dockerfile.<purpose>,其缺点是失去在 hub.docker.com 上使用 autobuilder 的功能。
因此其他人建议您将每个文件保存Dockerfile在一个目录中并从那里构建。
所以也许是这样的:
dockerfiles/
--python_consumer/
-----Dockerfile
--python_producer/
-----Dockerfile
--docker-compose.yaml
--.dockerignore
Run Code Online (Sandbox Code Playgroud)
在这种情况下,.dockerignore 是否可以在全局范围内适用于所有 dockerfile?以这种方式构建有什么大的缺点吗?
我的示例 docker-compose.yaml 没有单独的目录和一个组合的消费者/生产图像作为上下文。
version: '3.8'
services:
standalone:
hostname: standalone
container_name: standalone
image: apachepulsar/pulsar:2.8.1
ports:
- 8080:8080 # exposed would be a better practice
- 6650:6650 # exposed would be a better practice
command: bin/pulsar standalone
healthcheck:
test: ["CMD", "nc", "-vz", "localhost", "6650"]
interval: 20s …Run Code Online (Sandbox Code Playgroud) 我们可以使用 tarball 或 zip 存档构建一个 docker 镜像,其中包含 dockerfile 吗?我需要使用 docker api 从档案构建图像。
有没有任何参考或资源,我搜索了 3o 分钟但找不到任何东西。
请帮帮我!提前致谢!
在我的Maven项目中,我具有以下结构:
docker/
docker-compose.yml
A/
Dockerfile
B/
Dockerfile
src/
target/
foo.war
Run Code Online (Sandbox Code Playgroud)
在A的Dockerfile中,我需要使用/target以下命令访问文件夹中的war :
COPY ../../target/foo.war /usr/local/tomcat/webapps/foo.war
Run Code Online (Sandbox Code Playgroud)
当我运行docker-compose uptt给我错误
生成失败:COPY失败:生成上下文之外的禁止路径:../../target/foo.war
docker-compose.yml
version: '3.6'
services:
fooA:
build: ./docker/A
ports:
- "8080:8080"
depends_on:
- fooB
fooB:
build: ./docker/fooB
ports:
- "5433:5433"
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何解决吗?我不想在每个项目构建后手动复制war文件。
以下是Dockerfile:
FROM golang:1.14.10
MAINTAINER xyz
COPY ~/go/bin/product-api /go/bin/product-api
COPY ~/go/bin/swagger /go/bin/swagger
ENTRYPOINT ["/go/bin/product-api"]
Run Code Online (Sandbox Code Playgroud)
上docker build -t cloud-native-product-api:1.0.0 .,给出了错误:
Step 3/5 : COPY ~/go/bin/product-api /go/bin/product-api
COPY failed: stat /var/lib/docker/tmp/docker-builder398080099/~/go/bin/product-api: no such file or directory
Run Code Online (Sandbox Code Playgroud)
我认为图像构建过程将/var/lib/docker/tmp/docker-builder398080099作为工作区并从该路径引用。
如何将文件从本地机器的特定文件夹复制到 Docker 镜像中?
docker ×10
dockerfile ×3
backend ×1
docker-api ×1
docker-build ×1
docker-image ×1
frontend ×1
git ×1
java ×1
maven ×1
reactjs ×1
ssh ×1
symlink ×1
ubuntu ×1