summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorDessalines <happydooby@gmail.com>2019-05-04 09:02:57 -0700
committerDessalines <happydooby@gmail.com>2019-05-04 09:02:57 -0700
commit792301cab90261f7681d4066c34dbfb2faa14d53 (patch)
tree5661a7bd0bccaa0d2e5d7edd8af72d58fd58e70e /server
parent3ebd457a171c7d481bc7b50a44c2809833a4de8e (diff)
parentef169abbc53d74298f6e2ffbbbe60ba1e5d71b29 (diff)
Merge branch 'dev' into reorg
Diffstat (limited to 'server')
-rw-r--r--server/Dockerfile.dev28
-rw-r--r--server/Dockerfile.prod28
-rw-r--r--server/stack.dev.yaml111
-rw-r--r--server/stack.prod.yaml110
4 files changed, 277 insertions, 0 deletions
diff --git a/server/Dockerfile.dev b/server/Dockerfile.dev
new file mode 100644
index 00000000..203dd742
--- /dev/null
+++ b/server/Dockerfile.dev
@@ -0,0 +1,28 @@
+# 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"]
diff --git a/server/Dockerfile.prod b/server/Dockerfile.prod
new file mode 100644
index 00000000..b375e478
--- /dev/null
+++ b/server/Dockerfile.prod
@@ -0,0 +1,28 @@
+# 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"]
diff --git a/server/stack.dev.yaml b/server/stack.dev.yaml
new file mode 100644
index 00000000..7c6905b3
--- /dev/null
+++ b/server/stack.dev.yaml
@@ -0,0 +1,111 @@
+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
diff --git a/server/stack.prod.yaml b/server/stack.prod.yaml
new file mode 100644
index 00000000..d221de16
--- /dev/null
+++ b/server/stack.prod.yaml
@@ -0,0 +1,110 @@
+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