我是docker的新手,正在尝试一些东西,
FROM gitlab/gitlab-runner:alpine
WORKDIR /app
COPY . /app
RUN apk add yarn && yarn install
RUN ng build --prod
EXPOSE 3000
CMD ["yarn", "run", "start"]
以上是我创建的docker文件
docker build -t runner:1 .
我能够成功构建图像
docker run -p 3000:3000 runner:1
但是当我尝试运行容器时,它给了我下面的错误
`*FATAL: Command yarn not found.*`
不确定行为,如果它能够在基本映像中安装yarn(apk add yarn
)并使用yarn install
安装依赖项,那么在运行容器时如何找不到yarn命令?我要去哪里错了。
高山中还安装了哪个目录纱?
我知道这不是一个高效的docker文件,但是我在优化容器之前先尝试运行该容器。
要构建您的应用,您不应使用gitlab-runner图像,而应使用“节点”图像。
[Gilab-runner映像用于运行gitlab代理,该代理可以连接到docker引擎并生成将在其中执行构建的节点容器,在本例中为docker映像构建。
要使用gilab,您需要准备一个gitlab-ci文件,在其中定义执行构建所需的步骤和所需的“服务”。
Tl; dr:将基本映像更改为node:latest,并作为一个完全独立的工作设置gitlab运行程序。
但是,如果您的目标是让您的应用程序扩展gitlabRunner,请尝试使用docker多阶段构建。
首先,使用node:latest图像来构建您的应用程序,然后将构建输出复制到gitlab-runner中。
[诸如gitlab-runner的运行时映像已从诸如yarn或npm的构建工具中剥离,这就是您的映像失败的原因。主要目标是使运行时映像尽可能小,并且在生产级工作中不需要sdk,有时甚至很危险。