Dockerfile.build
FROM node:16-alpine3.14
WORKDIR /usr/src/app
COPY ["package.json",".npmrc", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install
COPY . .
# RUN npx browserslist@latest --update-db
RUN npm run build
CMD ["node"]
Dockerfile
FROM nginx
COPY ./dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
.gitlab-ci.yml
variables:
DOCKER_REGISTRY: xxxxx
BRANCH: ${CI_COMMIT_REF_NAME}
DOCKER_REPO_NAME: xxxxx
services:
- docker:dind
stages:
- build
- pack
build:
stage: build
script:
- docker build -t ${DOCKER_REPO_NAME}:${BRANCH}_build -f Dockerfile.build .
- docker create --name extract ${DOCKER_REPO_NAME}:${BRANCH}_build
- docker cp extract:/usr/src/app/dist ./dist
- docker rm -f extract
artifacts:
expire_in: 3 mins
paths:
- dist/
- Dockerfile
tags:
- public-runner001
pack:
stage: pack
dependencies:
- build
script:
- docker login -u ${CI_USER} -p ${CI_PASSWD} $DOCKER_REGISTRY
- docker build -t ${DOCKER_REPO_NAME}:${BRANCH} .
- echo ${DOCKER_REPO_NAME}:${BRANCH}
- docker push ${DOCKER_REPO_NAME}:${BRANCH}
tags:
- public-runner001