### Nginx Config
```
location / {
- rewrite (\/(user|u|inbox|post|community|c|login|search|sponsors|communities|modlog)+) /static/index.html break;
+ rewrite (\/(user|u|inbox|post|community|c|login|search|sponsors|communities|modlog|home)+) /static/index.html break;
proxy_pass http://0.0.0.0:8536;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
+++ /dev/null
-# Setup env
-FROM rust:1.33 AS build
-RUN USER=root cargo new --bin /opt/lemmy/server--dev
-WORKDIR /opt/lemmy/server--dev
-# Enable deps caching
-RUN mkdir -p src/bin
-RUN echo 'fn main() { println!("Dummy") }' >src/bin/main.rs
-# Install deps
-COPY Cargo.toml .
-COPY Cargo.lock .
-RUN cargo build --release
-RUN rm src/bin/main.rs
-# Add app
-COPY src/ src/
-COPY migrations/ migrations/
-RUN rm target/release/deps/lemmy*
-RUN cargo build --release
-
-# Setup env (no Alpine because Rust requires glibc)
-FROM ubuntu:18.04
-RUN apt update
-RUN apt install postgresql-client -y
-# Create empty directory where the frontend would normally be
-RUN mkdir -p /opt/lemmy/ui--dev/dist
-# Add app
-COPY --from=build /opt/lemmy/server--dev/target/release/lemmy .
-# Run app
-CMD ["./lemmy"]
+++ /dev/null
-# Setup env
-FROM rust:1.33 AS build
-RUN USER=root cargo new --bin /opt/lemmy/server--prod
-WORKDIR /opt/lemmy/server--prod
-# Enable deps caching
-RUN mkdir -p src/bin
-RUN echo 'fn main() { println!("Dummy") }' >src/bin/main.rs
-# Install deps
-COPY Cargo.toml .
-COPY Cargo.lock .
-RUN cargo build --release
-RUN rm src/bin/main.rs
-# Add app
-COPY src/ src/
-COPY migrations/ migrations/
-RUN rm target/release/deps/lemmy*
-RUN cargo build --release
-
-# Setup env (no Alpine because Rust requires glibc)
-FROM ubuntu:18.04
-RUN apt update
-RUN apt install postgresql-client -y
-# Create empty directory where the frontend would normally be
-RUN mkdir -p /opt/lemmy/ui--prod/dist
-# Add app
-COPY --from=build /opt/lemmy/server--prod/target/release/lemmy .
-# Run app
-CMD ["./lemmy"]
+++ /dev/null
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: postgres
-data:
- POSTGRES_PASSWORD: rrr
- POSTGRES_USER: rrr
- POSTGRES_DB: rrr
- PGDATA: /var/lib/postgresql/data/pgdata
- DATABASE_URL: postgres://rrr:rrr@postgres:5432/rrr
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: postgres
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 5Gi
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: postgres
-spec:
- selector:
- matchLabels:
- app: postgres
- template:
- metadata:
- labels:
- app: postgres
- spec:
- containers:
- - name: postgres
- image: postgres:11.2-alpine
- resources:
- limits:
- memory: 256Mi
- cpu: 512m
- ports:
- - containerPort: 5432
- envFrom:
- - configMapRef:
- name: postgres
- volumeMounts:
- - name: postgres
- mountPath: /var/lib/postgresql/data
- volumes:
- - name: postgres
- persistentVolumeClaim:
- claimName: postgres
----
-apiVersion: v1
-kind: Service
-metadata:
- name: postgres
-spec:
- selector:
- app: postgres
- ports:
- - port: 5432
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: lemmy-server--dev
-data:
- LEMMY_FRONT_END_DIR: /opt/lemmy/ui--dev/dist # not actually used here, polyfill for monolith
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: lemmy-server--dev
-spec:
- selector:
- matchLabels:
- app: lemmy-server--dev
- template:
- metadata:
- labels:
- app: lemmy-server--dev
- spec:
- containers:
- - name: lemmy-server--dev
- image: registry.gitlab.com/pojntfx/lemmy/server.dev
- envFrom:
- - configMapRef:
- name: postgres
- - configMapRef:
- name: lemmy-server--dev
- resources:
- limits:
- memory: 512Mi
- cpu: 512m
- ports:
- - containerPort: 8536
----
-apiVersion: v1
-kind: Service
-metadata:
- name: lemmy-server--dev
-spec:
- type: NodePort
- selector:
- app: lemmy-server--dev
- ports:
- - port: 8536
- nodePort: 30001
+++ /dev/null
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: postgres
-data:
- POSTGRES_PASSWORD: rrr
- POSTGRES_USER: rrr
- POSTGRES_DB: rrr
- PGDATA: /var/lib/postgresql/data/pgdata
- DATABASE_URL: postgres://rrr:rrr@postgres:5432/rrr
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: postgres
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 5Gi
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: postgres
-spec:
- selector:
- matchLabels:
- app: postgres
- template:
- metadata:
- labels:
- app: postgres
- spec:
- containers:
- - name: postgres
- image: postgres:11.2-alpine
- resources:
- limits:
- memory: 256Mi
- cpu: 512m
- ports:
- - containerPort: 5432
- envFrom:
- - configMapRef:
- name: postgres
- volumeMounts:
- - name: postgres
- mountPath: /var/lib/postgresql/data
- volumes:
- - name: postgres
- persistentVolumeClaim:
- claimName: postgres
----
-apiVersion: v1
-kind: Service
-metadata:
- name: postgres
-spec:
- selector:
- app: postgres
- ports:
- - port: 5432
----
-apiVersion: v1
-kind: ConfigMap
-metadata:
- name: lemmy-server--prod
-data:
- LEMMY_FRONT_END_DIR: /opt/lemmy/ui--prod/dist # not actually used here, polyfill for monolith
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: lemmy-server--prod
-spec:
- selector:
- matchLabels:
- app: lemmy-server--prod
- template:
- metadata:
- labels:
- app: lemmy-server--prod
- spec:
- containers:
- - name: lemmy-server--prod
- image: registry.gitlab.com/pojntfx/lemmy/server.prod
- envFrom:
- - configMapRef:
- name: postgres
- - configMapRef:
- name: lemmy-server--prod
- resources:
- limits:
- memory: 512Mi
- cpu: 512m
- ports:
- - containerPort: 8536
----
-apiVersion: v1
-kind: Service
-metadata:
- name: lemmy-server--prod
-spec:
- selector:
- app: lemmy-server--prod
- ports:
- - port: 8536
- targetPort: 8536
+++ /dev/null
-apiVersion: skaffold/v1beta9
-kind: Config
-profiles:
- - name: lemmy--dev
- build:
- artifacts:
- - image: registry.gitlab.com/pojntfx/lemmy/server.dev
- context: server
- docker:
- dockerfile: Dockerfile.dev
- - image: registry.gitlab.com/pojntfx/lemmy/ui.dev
- context: ui
- docker:
- dockerfile: Dockerfile.dev
- sync:
- "***/*.ts": .
- "***/*.tsx": .
- "***/*.css": .
- deploy:
- kubectl:
- manifests:
- - "**/*.dev.yaml"
- - name: lemmy--prod
- build:
- artifacts:
- - image: registry.gitlab.com/pojntfx/lemmy/server.prod
- context: server
- docker:
- dockerfile: Dockerfile.prod
- - image: registry.gitlab.com/pojntfx/lemmy/ui.prod
- context: ui
- docker:
- dockerfile: Dockerfile.prod
- deploy:
- kubectl:
- manifests:
- - "**/*.prod.yaml"
+++ /dev/null
-# Setup env
-FROM node:10-alpine
-RUN mkdir -p /opt/lemmy/ui--dev
-WORKDIR /opt/lemmy/ui--dev
-# Install deps
-COPY package.json .
-COPY yarn.lock .
-RUN npm install
-# Add app
-COPY . .
-# Run app
-CMD ["npm", "start"]
+++ /dev/null
-# Setup env
-FROM node:10-alpine AS build
-RUN mkdir -p /opt/lemmy/ui--prod
-WORKDIR /opt/lemmy/ui--prod
-# Install deps
-COPY package.json .
-COPY yarn.lock .
-RUN npm install
-# Add app
-COPY . .
-# Build app
-RUN npm run build
-
-# Setup env
-FROM node:10-alpine
-RUN mkdir -p /opt/lemmy/ui--prod
-WORKDIR /opt/lemmy/ui--prod
-RUN npm install serve
-# Add app
-COPY --from=build /opt/lemmy/ui--prod/dist .
-# Run app
-CMD ["/opt/lemmy/ui--prod/node_modules/.bin/serve", "."]
+++ /dev/null
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: lemmy-ui--dev
-spec:
- selector:
- matchLabels:
- app: lemmy-ui--dev
- template:
- metadata:
- labels:
- app: lemmy-ui--dev
- spec:
- containers:
- - name: lemmy-ui--dev
- image: registry.gitlab.com/pojntfx/lemmy/ui.dev
- resources:
- limits:
- memory: 1024Mi
- cpu: 512m
- ports:
- - containerPort: 4444
----
-apiVersion: v1
-kind: Service
-metadata:
- name: lemmy-ui--dev
-spec:
- type: NodePort
- selector:
- app: lemmy-ui--dev
- ports:
- - port: 4444
- nodePort: 30002
+++ /dev/null
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: lemmy-ui--prod
-spec:
- selector:
- matchLabels:
- app: lemmy-ui--prod
- template:
- metadata:
- labels:
- app: lemmy-ui--prod
- spec:
- containers:
- - name: lemmy-ui--prod
- image: registry.gitlab.com/pojntfx/lemmy/ui.prod
- resources:
- limits:
- memory: 1024Mi
- cpu: 512m
- ports:
- - containerPort: 4444
----
-apiVersion: v1
-kind: Service
-metadata:
- name: lemmy-ui--prod
-spec:
- selector:
- app: lemmy-ui--prod
- ports:
- - port: 5000
- targetPort: 5000
----
-apiVersion: extensions/v1beta1
-kind: Ingress
-metadata:
- name: lemmy-server--prod
- annotations:
- traefik.ingress.kubernetes.io/request-modifier: "ReplacePathRegex: ^/static/(.*) /$1"
-spec:
- rules:
- - host: dev.lemmy.local
- http:
- paths:
- - path: /
- backend:
- serviceName: lemmy-ui--prod
- servicePort: 5000
- - path: /api/v1/ws
- backend:
- serviceName: lemmy-server--prod
- servicePort: 8536