下面是我的Dockerfile
FROM node
ARG ENVIRONMENT
ARG PORT
ENV PORT $PORT
ENV ENVIRONMENT $ENVIRONMENT
RUN apt-get update -qq
RUN apt-get install --yes curl
RUN apt-get update && apt-get install -my wget gnupg
RUN curl --silent --location https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get install --yes nodejs
RUN apt-get install --yes build-essential vim
RUN mkdir /auth_service
ADD . /auth_service
WORKDIR /auth_service
RUN npm install -g express
RUN npm install -g path
RUN npm cache verify
RUN npm install
EXPOSE $PORT
ENTRYPOINT [ "node", "server.js" ]
CMD [ $PORT, $ENVIRONMENT ]
我正在使用代码
运行该服务#!/bin/bash
ORGANISATION="$1"
SERVICE_NAME="$2"
VERSION="$3"
ENVIRONMENT="$4"
INTERNAL_PORT_NUMBER="$5"
EXTERNAL_PORT_NUMBER="$6"
NETWORK="$7"
sudo docker build -t ${ORGANISATION}/${SERVICE_NAME}:${VERSION} --build-arg PORT=${INTERNAL_PORT_NUMBER} --build-arg ENVIRONMENT=${ENVIRONMENT} --no-cache .
sudo docker stop ${SERVICE_NAME}
sudo docker rm ${SERVICE_NAME}
docker run -p ${EXTERNAL_PORT_NUMBER}:${INTERNAL_PORT_NUMBER} --network ${NETWORK} --name ${SERVICE_NAME} --restart always -m 1024M --memory-swap -1 -itd ${ORGANISATION}/${SERVICE_NAME}:${VERSION}
此外,我在构建和部署过程中遇到以下错误。
debconf: delaying package configuration, since apt-utils is not installed
请建议更改以改善执行时间
提前致谢
答案 0 :(得分:0)
我可以想到一些改进。
--no-cache
正如其他评论建议的那样,这将大大缩短您的构建时间。下面的其他建议还需要您先删除--no-cache
。
将某些命令重新排序为ADD / COPY
之前RUN npm install -g express
RUN npm install -g path
RUN npm cache verify
由于ADD / COPY检查您的文件发生了变化,因此每次构建映像时都可能会安装express
和path
而不使用任何缓存。
package.json
您可以先考虑COPY package.json
和RUN npm install
。然后,COPY
其他文件到上下文。这将确保您的依赖关系并缓存它们,因此下次如果您的依赖关系列表没有更改,您将不需要花时间再次安装它们。
答案 1 :(得分:0)
这里有多个问题,但总结一个答案:
RUN apt-get update -qq && apt-get install --yes curl
等。