我是 Openshift 3.11 部署的新手,我为 React 应用程序创建了一个多阶段 Dockerfile,构建希望在我的本地计算机上正确运行,但是当我在 openshift 集群上运行时,出现以下错误:
\n> kncare-ui@0.1.0 build\n> tsc && vite build\n\nvite v2.9.9 building for production...\n\xe2\x9c\x93 0 modules transformed.\nCould not resolve entry module (index.html).\nerror during build:\nError: Could not resolve entry module (index.html).\n at error (/app/node_modules/rollup/dist/shared/rollup.js:198:30)\n at ModuleLoader.loadEntryModule (/app/node_modules/rollup/dist/shared/rollup.js:22680:20)\n at async Promise.all (index 0)\nerror: build error: running \'npm run build\' failed with exit code 1\nRun Code Online (Sandbox Code Playgroud)\n这是我的文档
\nFROM node:16.14.2-alpine as build-stage \nRUN mkdir -p /app/\nWORKDIR /app/\nRUN chmod -R 777 /app/\nCOPY package*.json /app/\nCOPY tsconfig.json /app/\nCOPY tsconfig.node.json …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Apache和PHP程序运行一个简单的Docker镜像.如果我跑,它工作正常
docker run -t -i -p 80:80 my/httpd /bin/bash
Run Code Online (Sandbox Code Playgroud)
然后手动启动Apache
service httpd start
Run Code Online (Sandbox Code Playgroud)
但是我无法让httpd在运行时自动启动
docker run -d -p 80:80 my/httpd
Run Code Online (Sandbox Code Playgroud)
Apache将启动然后容器存在.我CMD在docker文件中尝试过一堆不同的s
CMD /etc/init.d/httpd start
CMD ["service" "httpd" "start"]
CMD ["/bin/bash", "/etc/init.d/httpd start"]
ENTRYPOINT /etc/init.d/httpd CMD start
CMD ./start.sh
Run Code Online (Sandbox Code Playgroud)
start.sh是
#!/bin/bash
/etc/init.d/httpd start
Run Code Online (Sandbox Code Playgroud)
但是,apache启动后,每次都会存在docker实例
我错过了一些非常明显的东西吗
使用Dockerfile将私有Git存储库克隆到Docker容器的最佳策略是什么?优点缺点?
我知道我可以在Dockerfile上添加命令,以便将我的私有存储库克隆到docker容器中.但我想知道人们在这个案例中采用了哪些不同的方法.
它没有包含在Dockerfile最佳实践指南中.
我有一个docker-compose-staging.yml文件,我用它来定义一个PHP应用程序.我已经定义了应用程序代码所在的数据卷容器(app),并使用volumes_from与其他容器共享.
泊坞窗 - 撰写-staging.yml:
version: '2'
services:
nginx:
build:
context: ./
dockerfile: docker/staging/nginx/Dockerfile
ports:
- 80:80
links:
- php
volumes_from:
- app
php:
build:
context: ./
dockerfile: docker/staging/php/Dockerfile
expose:
- 9000
volumes_from:
- app
app:
build:
context: ./
dockerfile: docker/staging/app/Dockerfile
volumes:
- /var/www/html
entrypoint: /bin/bash
Run Code Online (Sandbox Code Playgroud)
此特定的docker-compose-staging.yml用于将应用程序部署到云提供程序(DigitalOcean),而app容器的Dockerfile具有COPY命令,该命令将文件夹从本地目录复制到配置中定义的卷.
泊坞窗/分期/应用/ Dockerfile:
FROM php:7.1-fpm
COPY ./public /var/www/html/public
COPY ./code /var/www/html/code
Run Code Online (Sandbox Code Playgroud)
这在我第一次构建和部署应用程序时有效.我的公共和代码目录中的代码在远程服务器上存在且正确.我使用以下命令进行部署:
docker-compose -f docker-compose-staging.yml up -d
Run Code Online (Sandbox Code Playgroud)
但是,接下来我尝试将文件添加到我的本地公共目录,然后运行以下命令来重建更新的代码:
docker-compose -f docker-compose-staging.yml build app
Run Code Online (Sandbox Code Playgroud)
此重建的输出表明COPY命令成功:
Building app
Step 1 : FROM php:7.1-fpm
---> 6ed35665f88f
Step 2 …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个自动启动Apache的Dockerfile.没有任何效果.但是,如果我登录容器并运行service apache2 start它的工作原理.为什么我不能从我的Dockerfile运行该命令?
FROM ubuntu
# File Author / Maintainer
MAINTAINER rmuktader
# Update the repository sources list
RUN apt-get update
# Install and run apache
RUN apt-get install -y apache2 && apt-get clean
#ENTRYPOINT ["/usr/sbin/apache2", "-k", "start"]
#ENV APACHE_RUN_USER www-data
#ENV APACHE_RUN_GROUP www-data
#ENV APACHE_LOG_DIR /var/log/apache2
EXPOSE 80
CMD service apache2 start
Run Code Online (Sandbox Code Playgroud) 我的docker容器在本地网络中运行,名为my_local_network.为确保网络存在,每个构建脚本都以以下内容开头:
docker network create --driver bridge my_local_network
Run Code Online (Sandbox Code Playgroud)
这很好用.如果网络不存在,则创建它,如果没有,则不会发生任何事情.除了错误消息:
Error response from daemon: network with name my_local_network already exists
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉docker只创建网络,如果它不存在?
我有一个 dockerfile 如下,但在RUN npm ci步骤中,有一个npm WARN old lockfile The package-lock.json file was created with an old version of npm我无法弄清楚的警告..
我尝试使用 npm install 而不是 npm ci,添加了--package-lock标志但仍然收到此警告。这是我必须忽略的一种警告,或者我应该怎么解决这个问题
Step 12/26 : RUN npm ci --production --package-lock && npm ci --production --package-lock --prefix ./ui-runner
---> Running in 3473c209b98c
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建我的 docker 映像,但收到此错误。
错误CS5001:程序不包含适合入口点的静态“Main”方法[/6GAG.WebApi/6GAG.WebApi.csproj]
我的 1 个解决方案中有 3 个项目。
我的 Dockerfile 存在于我的 .sln 文件所在的目录中
FROM mcr.microsoft.com/dotnet/sdk:6.0 as build-env
WORKDIR /app
COPY 6GAG.WebApi/6GAG.WebApi.csproj /6GAG.WebApi/6GAG.WebApi.csproj
COPY 6GAG.Core/6GAG.Core.csproj /6GAG.Core/6GAG.Core.csproj
RUN dotnet restore /6GAG.WebApi/6GAG.WebApi.csproj
COPY ./ ./
RUN dotnet publish /6GAG.WebApi/6GAG.WebApi.csproj -c Release -o out
FROM mcr.microsoft.com/dotnet/aspnet:6.0
WORKDIR /app
EXPOSE 80
COPY --from=build-env app/out/ .
ENTRYPOINT ["dotnet", "6GAG.WebApi.dll"]
Run Code Online (Sandbox Code Playgroud)
我的 .csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>_6GAG.WebApi</RootNamespace>
<UserSecretsId>7f7e2bd0-6f27-4752-afe8-9839b765d3f0</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoMapper" Version="10.1.1" />
<PackageReference Include="FluentValidation.AspNetCore" Version="10.3.4" />
<PackageReference …Run Code Online (Sandbox Code Playgroud) 我们正在使用 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) 我在我的一个 NestJS 应用程序中使用私有 github 存储库时遇到问题。当我使用命令创建 docker 映像时docker build,映像已成功创建,并且一切正常。但是我无法将 Dockerfile 与docker-compose.
Dockerfile这是我使用挂载功能的部分BuildKit:
RUN mkdir -p -m 0600 ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts
RUN --mount=type=ssh npm install
Run Code Online (Sandbox Code Playgroud)
当单独构建图像时,Dockerfile我传递了--ssh default参数,如下所示,它成功安装了私有存储库:
docker build --ssh default -t CONTAINER_NAME .
Run Code Online (Sandbox Code Playgroud)
在这篇文章之后,docker-compose.yml我在文件中包含了$SSH_AUTH_SOCK如下内容:
environment:
- NODE_ENV:${NODE_ENV}
- SSH_AUTH_SOCK:${SSH_AUTH_SOCK}
volumes:
- $SSH_AUTH_SOCK:${SSH_AUTH_SOCK}
Run Code Online (Sandbox Code Playgroud)
但是,每当我尝试运行时都会出现此错误docker-compose up
#11 44.97 npm ERR! code 128
#11 44.97 npm ERR! An unknown git error occurred
#11 …Run Code Online (Sandbox Code Playgroud)