This commit is contained in:
Sergey Bolshakov 2025-10-24 21:11:54 +03:00
commit ef97925591
3 changed files with 49 additions and 27 deletions

7
.dockerignore Normal file
View File

@ -0,0 +1,7 @@
.git
.gitlab
node_modules
.next/cache
Dockerfile
docker-compose.yml
*.log

View File

@ -1,31 +1,22 @@
stages:
- build
- test
- deploy
- build
- deploy
build-job:
stage: build
script:
- echo "Compiling the code..."
- echo "Compile complete."
workflow:
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
unit-test-job:
stage: test
script:
- echo "Running unit tests... This will take about 60 seconds."
- sleep 60
- echo "Code coverage is 90%"
build:
stage: build
script:
- echo "Building Docker image..."
- docker build -t travelmarine-frontend:latest .
lint-test-job:
stage: test
script:
- echo "Linting code... This will take about 10 seconds."
- sleep 10
- echo "No lint issues found."
deploy-job:
stage: deploy
environment: production
script:
- echo "Deploying application..."
- echo "Application successfully deployed."
deploy:
stage: deploy
needs: ["build"]
script:
- echo "Restarting container..."
- docker ps -a --filter 'name=^/travelmarine-frontend$' --format '{{.Names}}' | grep -q '^travelmarine-frontend$' && docker rm -f travelmarine-frontend || true
- docker run -d --name travelmarine-frontend --restart unless-stopped -p 127.0.0.1:3000:3000 travelmarine-frontend:latest
when: on_success

24
Dockerfile Normal file
View File

@ -0,0 +1,24 @@
FROM node:22-alpine AS builder
WORKDIR /app
RUN apk add --no-cache libc6-compat
COPY package-lock.json ./
COPY package.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine AS runner
WORKDIR /app
RUN apk add --no-cache libc6-compat
ENV NODE_ENV=production
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package-lock.json ./
COPY --from=builder /app/package.json ./
EXPOSE 3000
CMD ["npm", "run", "start"]