Browse Source

add docker drones.

master 0.1.0
Gisle Aune 2 years ago
parent
commit
0a252156db
  1. 71
      .drone.yml
  2. 24
      Dockerfile
  3. 32
      frontend/Dockerfile

71
.drone.yml

@ -0,0 +1,71 @@
name: stufflog3
kind: pipeline
type: docker
steps:
- name: go-test
image: golang:1.18
commands:
- go generate ./...
- go test -v ./...
- name: docker-backend-release-tag
image: plugins/docker
settings:
auto_tag: true
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: r.vmaple.dev/stufflog3/backend
registry: r.vmaple.dev
when:
event:
- tag
- name: docker-backend-release-latest
image: plugins/docker
settings:
auto_tag: false
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: r.vmaple.dev/stufflog3/backend
registry: r.vmaple.dev
when:
event:
- tag
- name: docker-frontend-tag
image: plugins/docker
settings:
dockerfile: ./frontend/Dockerfile
context: ./frontend
auto_tag: true
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: r.vmaple.dev/stufflog3/frontend
registry: r.vmaple.dev
when:
event:
- tag
- name: docker-frontend-latest
image: plugins/docker
settings:
dockerfile: ./frontend/Dockerfile
context: ./frontend
auto_tag: false
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: r.vmaple.dev/stufflog3/frontend
registry: r.vmaple.dev
when:
event:
- tag

24
Dockerfile

@ -0,0 +1,24 @@
## 1. Build Server
# Use Go 1.18
FROM golang:1.18 AS build-server
# Load repository into docker
WORKDIR /project/
COPY . .
# Build server and tools (CGO disabled to make them 100% static)
ENV CGO_ENABLED 0
RUN go build -installsuffix cgo -ldflags="-s -w" -o /binaries/stufflog3-local ./cmd/stufflog3-local
## 2. Distribute
# Use alpine linux
FROM alpine:3.16
# Install certificates to enable HTTPS GET requests, and tzdata for log imports.
RUN apk add --no-cache ca-certificates tzdata
# Copy build files into final container
COPY --from=build-server /binaries/* /usr/local/bin/
# The server is the main entry point
CMD ["/usr/local/bin/stufflog3-local"]

32
frontend/Dockerfile

@ -0,0 +1,32 @@
## 1. Builder
# Use nodejs 16
FROM node:16-alpine AS builder
# Load repository into container
WORKDIR /frontend
COPY . .
# Setup development environment
RUN apk add --no-cache git
# Install and compress node_modules
RUN rm -rf node_modules
RUN mkdir node_modules
RUN npm ci
# Build templates
RUN npm run build
RUN cp package.json ./build/
RUN ls -lh ./build
## 2. Regroup
FROM node:16-alpine
RUN apk add --no-cache ca-certificates
# Bring data over from builder
WORKDIR /frontend
COPY --from=builder /frontend/build /frontend
ENV NODE_ENV=production
# Entry point
CMD ["/usr/local/bin/node", "index.js"]
Loading…
Cancel
Save