Gisle Aune
2 years ago
3 changed files with 127 additions and 0 deletions
-
71.drone.yml
-
24Dockerfile
-
32frontend/Dockerfile
@ -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 |
@ -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"] |
@ -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"] |
Write
Preview
Loading…
Cancel
Save
Reference in new issue