标签: dockerfile

Vite:无法解析入口模块(index.html)

我是 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\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的文档

\n
FROM 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)

node.js openshift docker dockerfile

24
推荐指数
1
解决办法
5万
查看次数

Docker CentOS映像不会自动启动httpd

我正在尝试使用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实例

我错过了一些非常明显的东西吗

apache centos docker dockerfile

23
推荐指数
2
解决办法
4万
查看次数

Git的Dockerfile策略

使用Dockerfile将私有Git存储库克隆到Docker容器的最佳策略是什么?优点缺点?

我知道我可以在Dockerfile上添加命令,以便将我的私有存储库克隆到docker容器中.但我想知道人们在这个案例中采用了哪些不同的方法.

它没有包含在Dockerfile最佳实践指南中.

git git-clone docker dockerfile

23
推荐指数
3
解决办法
2万
查看次数

Docker COPY在重建容器时不更新文件

我有一个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)

docker dockerfile docker-compose

23
推荐指数
5
解决办法
2万
查看次数

如何在ubuntu docker容器中自动启动apache2?

我正在尝试创建一个自动启动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)

apache ubuntu docker dockerfile

23
推荐指数
3
解决办法
3万
查看次数

Docker创建网络应该忽略现有网络

我的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只创建网络,如果它不存在?

docker dockerfile

23
推荐指数
4
解决办法
8150
查看次数

npm WARN old lockfile package-lock.json 文件是用旧版本的 npm 创建的

我有一个 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)

node.js npm docker dockerfile

23
推荐指数
4
解决办法
2万
查看次数

Docker .Net 6 错误程序不包含适合入口点的静态“Main”方法

我正在尝试构建我的 docker 映像,但收到此错误。

错误CS5001:程序不包含适合入口点的静态“Main”方法[/6GAG.WebApi/6GAG.WebApi.csproj]

我的 1 个解决方案中有 3 个项目。

  • 1 个网络 API
  • 1个前端应用程序
  • 1个类库

我的 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)

dockerfile asp.net-core asp.net-core-webapi .net-6.0

23
推荐指数
3
解决办法
2万
查看次数

检查 dockerfile 中的架构以获取 amd/arm

我们正在使用 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)

debian x86-64 docker dockerfile apple-m1

23
推荐指数
1
解决办法
1万
查看次数

将 SSH 代理与 Docker Compose 和 Dockerfile 结合使用

我在我的一个 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)

ssh node.js docker dockerfile docker-compose

23
推荐指数
2
解决办法
2万
查看次数