Skip to content

Commit 5139003

Browse files
authored
Merge pull request #171 from Call-for-Code-for-Racial-Justice/roadshow2022-charles
Roadshow2022 charles
2 parents a13546a + 6ed6ebb commit 5139003

25 files changed

+804
-20
lines changed

Dockerfile

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,45 @@
1-
FROM registry.access.redhat.com/ubi8/python-38:1-71.1634036286
1+
FROM python:3.9.13-slim-buster as base
22

3-
WORKDIR /opt/app-root/src
3+
# Setup env
4+
ENV LANG C.UTF-8
5+
ENV LC_ALL C.UTF-8
6+
ENV PYTHONDONTWRITEBYTECODE 1
7+
ENV PYTHONFAULTHANDLER 1
48

5-
COPY --chown=1001:0 . .
6-
RUN chmod -R g=u .
79

8-
USER 1001
10+
FROM base AS python-deps
11+
12+
# Install pipenv and compilation dependencies
13+
RUN pip install --no-cache-dir --upgrade pip==22.2.2 && \
14+
pip install --no-cache-dir pipenv==2022.8.24 gunicorn==20.1.0 django==4.1 django_bootstrap4==22.2 django_extensions==3.2.0 django-allow-cidr==0.5.0 django_q==1.3.9 psycopg2-binary==2.9.3 whitenoise==6.2.0
15+
16+
# Install python dependencies in /.venv
17+
WORKDIR /
18+
COPY Pipfile Pipfile.lock ./
19+
20+
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy
21+
922

10-
ENV LC_ALL=C.UTF-8 \
11-
LANG=C.UTF-8 \
12-
PYTHONDONTWRITEBYTECODE=1 \
13-
PYTHONFAULTHANDLER=1
23+
FROM base AS runtime
24+
25+
# Install extra packages
26+
RUN apt-get update && \
27+
apt-get install -y --no-install-recommends postgresql-client=11+200+deb10u4 iputils-ping=3:20180629-2+deb10u2 curl=7.64.0-4+deb10u3 && rm -rf /var/lib/apt/lists/*
28+
29+
# Create and switch to a new user
30+
RUN useradd --create-home --uid 1001 --gid 0 appuser
31+
WORKDIR /home/appuser
32+
33+
# Copy virtual env from python-deps stage
34+
COPY --from=python-deps /.venv /.venv
35+
ENV PATH="/.venv/bin:$PATH"
36+
37+
# Install application into container
38+
COPY --chown=1001:0 . .
39+
RUN chmod -R g=u .
1440

15-
# see issue https://github.com/pypa/pipenv/issues/4220 for pipenv version
16-
RUN pip install --no-cache-dir --upgrade pip==21.3.1 && \
17-
pip install --no-cache-dir pipenv==2018.11.26 && \
18-
pipenv install --system --dev
41+
USER appuser
1942

2043
EXPOSE 8080
2144

22-
ENTRYPOINT ["sh", "entrypoint.sh"]
23-
CMD ["gunicorn", "-b", "0.0.0.0:8080", "--env", "DJANGO_SETTINGS_MODULE=cfc_project.settings", "cfc_project.wsgi", "--timeout 120"]
45+
CMD ["bash", "entrypoint.sh"]

cfc_project/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@
160160
ALLOWED_CIDR_NETS = ['10.0.0.0/8']
161161

162162
ALLOWED_HOSTS = [ gethostname(), gethostbyname(gethostname()),
163-
'.mybluemix.net', '.codeengine.appdomain.cloud', '0.0.0.0', '127.0.0.1', 'localhost']
163+
'.mybluemix.net', '.codeengine.appdomain.cloud', '.apps-crc.testing', '0.0.0.0', '127.0.0.1', 'localhost']
164164

165165
# Application definition
166166

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
version: "3.2"
2+
3+
services:
4+
legitinfo-db:
5+
container_name: legitinfo-db
6+
image: registry.redhat.io/rhscl/postgresql-13-rhel7:latest
7+
labels:
8+
kompose.service.healthcheck.readiness.test: CMD /usr/libexec/check-container
9+
kompose.service.healthcheck.readiness.interval: 10s
10+
kompose.service.healthcheck.readiness.timeout: 10s
11+
kompose.service.healthcheck.readiness.retries: 3
12+
kompose.service.healthcheck.readiness.start_period: 120s
13+
user: "postgres"
14+
healthcheck:
15+
test: /usr/libexec/check-container '--live'
16+
interval: 5s
17+
timeout: 10s
18+
retries: 120
19+
ports:
20+
- "5432:5432"
21+
environment:
22+
POSTGRESQL_DATABASE: ${database-name}
23+
POSTGRESQL_USER: ${database-user}
24+
POSTGRESQL_PASSWORD: ${database-password}
25+
volumes:
26+
- postgresql-data:/var/lib/pgsql/data
27+
28+
legitinfo:
29+
container_name: legitinfo
30+
image: docker.io/callforcode/legit-info
31+
depends_on:
32+
- legitinfo-db
33+
labels:
34+
kompose.service.expose: "true"
35+
kompose.service.healthcheck.readiness.http_get_path: /health/
36+
kompose.service.healthcheck.readiness.http_get_port: 8080
37+
kompose.service.healthcheck.readiness.interval: 10s
38+
kompose.service.healthcheck.readiness.timeout: 10s
39+
kompose.service.healthcheck.readiness.retries: 3
40+
kompose.service.healthcheck.readiness.start_period: 120s
41+
restart: always
42+
ports:
43+
- "8080:8080"
44+
environment:
45+
USE_SQLITE3: "False"
46+
POSTGRESQL_HOSTNAME: legitinfo-db
47+
POSTGRESQL_DATABASE: ${database-name}
48+
POSTGRESQL_USER: ${database-user}
49+
POSTGRESQL_PASSWORD: ${database-password}
50+
51+
volumes:
52+
postgresql-data:
53+
54+
secrets:
55+
postgresql:
56+
file: ./postgresql.txt
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
database-name=cfcappdb
2+
database-user=cfcuser
3+
database-password=cfcpassword
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
annotations:
5+
kompose.cmd: kompose -f configurations/docker/docker-compose.yaml --out configurations/kubernetes/ convert
6+
kompose.service.healthcheck.readiness.interval: 10s
7+
kompose.service.healthcheck.readiness.retries: "3"
8+
kompose.service.healthcheck.readiness.start_period: 120s
9+
kompose.service.healthcheck.readiness.test: CMD /usr/libexec/check-container
10+
kompose.service.healthcheck.readiness.timeout: 10s
11+
kompose.version: 1.26.1 (a9d05d509)
12+
creationTimestamp: null
13+
labels:
14+
io.kompose.service: legitinfo-db
15+
name: legitinfo-db
16+
spec:
17+
replicas: 1
18+
selector:
19+
matchLabels:
20+
io.kompose.service: legitinfo-db
21+
strategy:
22+
type: Recreate
23+
template:
24+
metadata:
25+
annotations:
26+
kompose.cmd: kompose -f configurations/docker/docker-compose.yaml --out configurations/kubernetes/ convert
27+
kompose.service.healthcheck.readiness.interval: 10s
28+
kompose.service.healthcheck.readiness.retries: "3"
29+
kompose.service.healthcheck.readiness.start_period: 120s
30+
kompose.service.healthcheck.readiness.test: CMD /usr/libexec/check-container
31+
kompose.service.healthcheck.readiness.timeout: 10s
32+
kompose.version: 1.26.1 (a9d05d509)
33+
creationTimestamp: null
34+
labels:
35+
io.kompose.service: legitinfo-db
36+
spec:
37+
containers:
38+
- env:
39+
- name: POSTGRESQL_DATABASE
40+
valueFrom:
41+
secretKeyRef:
42+
name: postgresql
43+
key: database-name
44+
- name: POSTGRESQL_PASSWORD
45+
valueFrom:
46+
secretKeyRef:
47+
name: postgresql
48+
key: database-password
49+
- name: POSTGRESQL_USER
50+
valueFrom:
51+
secretKeyRef:
52+
name: postgresql
53+
key: database-user
54+
image: registry.redhat.io/rhscl/postgresql-13-rhel7:latest
55+
livenessProbe:
56+
exec:
57+
command:
58+
- /usr/libexec/check-container '--live'
59+
failureThreshold: 120
60+
periodSeconds: 5
61+
timeoutSeconds: 10
62+
name: legitinfo-db
63+
ports:
64+
- containerPort: 5432
65+
readinessProbe:
66+
exec:
67+
command:
68+
- /usr/libexec/check-container
69+
failureThreshold: 3
70+
initialDelaySeconds: 120
71+
periodSeconds: 10
72+
timeoutSeconds: 10
73+
resources: {}
74+
volumeMounts:
75+
- mountPath: /var/lib/pgsql/data
76+
name: postgresql-data
77+
restartPolicy: Always
78+
volumes:
79+
- name: postgresql-data
80+
persistentVolumeClaim:
81+
claimName: postgresql-data
82+
status: {}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
annotations:
5+
kompose.cmd: kompose -f configurations/docker/docker-compose.yaml --out configurations/kubernetes/ convert
6+
kompose.service.healthcheck.readiness.interval: 10s
7+
kompose.service.healthcheck.readiness.retries: "3"
8+
kompose.service.healthcheck.readiness.start_period: 120s
9+
kompose.service.healthcheck.readiness.test: CMD /usr/libexec/check-container
10+
kompose.service.healthcheck.readiness.timeout: 10s
11+
kompose.version: 1.26.1 (a9d05d509)
12+
creationTimestamp: null
13+
labels:
14+
io.kompose.service: legitinfo-db
15+
name: legitinfo-db
16+
spec:
17+
ports:
18+
- name: "5432"
19+
port: 5432
20+
targetPort: 5432
21+
selector:
22+
io.kompose.service: legitinfo-db
23+
status:
24+
loadBalancer: {}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
annotations:
5+
kompose.cmd: kompose -f configurations/docker/docker-compose.yaml --out configurations/kubernetes/ convert
6+
kompose.service.expose: "true"
7+
kompose.service.healthcheck.readiness.http_get_path: /health/
8+
kompose.service.healthcheck.readiness.http_get_port: "8080"
9+
kompose.service.healthcheck.readiness.interval: 10s
10+
kompose.service.healthcheck.readiness.retries: "3"
11+
kompose.service.healthcheck.readiness.start_period: 120s
12+
kompose.service.healthcheck.readiness.timeout: 10s
13+
kompose.version: 1.26.1 (a9d05d509)
14+
creationTimestamp: null
15+
labels:
16+
io.kompose.service: legitinfo
17+
name: legitinfo
18+
spec:
19+
replicas: 1
20+
selector:
21+
matchLabels:
22+
io.kompose.service: legitinfo
23+
strategy: {}
24+
template:
25+
metadata:
26+
annotations:
27+
kompose.cmd: kompose -f configurations/docker/docker-compose.yaml --out configurations/kubernetes/ convert
28+
kompose.service.expose: "true"
29+
kompose.service.healthcheck.readiness.http_get_path: /health/
30+
kompose.service.healthcheck.readiness.http_get_port: "8080"
31+
kompose.service.healthcheck.readiness.interval: 10s
32+
kompose.service.healthcheck.readiness.retries: "3"
33+
kompose.service.healthcheck.readiness.start_period: 120s
34+
kompose.service.healthcheck.readiness.timeout: 10s
35+
kompose.version: 1.26.1 (a9d05d509)
36+
creationTimestamp: null
37+
labels:
38+
io.kompose.service: legitinfo
39+
spec:
40+
containers:
41+
- env:
42+
- name: POSTGRESQL_HOSTNAME
43+
value: legitinfo-db
44+
- name: USE_SQLITE3
45+
value: "False"
46+
- name: POSTGRESQL_DATABASE
47+
valueFrom:
48+
secretKeyRef:
49+
name: postgresql
50+
key: database-name
51+
- name: POSTGRESQL_PASSWORD
52+
valueFrom:
53+
secretKeyRef:
54+
name: postgresql
55+
key: database-password
56+
- name: POSTGRESQL_USER
57+
valueFrom:
58+
secretKeyRef:
59+
name: postgresql
60+
key: database-user
61+
image: docker.io/callforcode/legit-info
62+
name: legitinfo
63+
ports:
64+
- containerPort: 8080
65+
readinessProbe:
66+
failureThreshold: 3
67+
httpGet:
68+
path: /health/
69+
port: 8080
70+
initialDelaySeconds: 120
71+
periodSeconds: 10
72+
timeoutSeconds: 10
73+
resources: {}
74+
restartPolicy: Always
75+
status: {}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
apiVersion: networking.k8s.io/v1
2+
kind: Ingress
3+
metadata:
4+
annotations:
5+
kompose.cmd: kompose -f configurations/docker/docker-compose.yaml --out configurations/kubernetes/ convert
6+
kompose.service.expose: "true"
7+
kompose.service.healthcheck.readiness.http_get_path: /health/
8+
kompose.service.healthcheck.readiness.http_get_port: "8080"
9+
kompose.service.healthcheck.readiness.interval: 10s
10+
kompose.service.healthcheck.readiness.retries: "3"
11+
kompose.service.healthcheck.readiness.start_period: 120s
12+
kompose.service.healthcheck.readiness.timeout: 10s
13+
kompose.version: 1.26.1 (a9d05d509)
14+
creationTimestamp: null
15+
labels:
16+
io.kompose.service: legitinfo
17+
name: legitinfo
18+
spec:
19+
rules:
20+
- http:
21+
paths:
22+
- backend:
23+
service:
24+
name: legitinfo
25+
port:
26+
number: 8080
27+
path: /
28+
pathType: Prefix
29+
status:
30+
loadBalancer: {}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
annotations:
5+
kompose.cmd: kompose -f configurations/docker/docker-compose.yaml --out configurations/kubernetes/ convert
6+
kompose.service.expose: "true"
7+
kompose.service.healthcheck.readiness.http_get_path: /health/
8+
kompose.service.healthcheck.readiness.http_get_port: "8080"
9+
kompose.service.healthcheck.readiness.interval: 10s
10+
kompose.service.healthcheck.readiness.retries: "3"
11+
kompose.service.healthcheck.readiness.start_period: 120s
12+
kompose.service.healthcheck.readiness.timeout: 10s
13+
kompose.version: 1.26.1 (a9d05d509)
14+
creationTimestamp: null
15+
labels:
16+
io.kompose.service: legitinfo
17+
name: legitinfo
18+
spec:
19+
ports:
20+
- name: "8080"
21+
port: 8080
22+
targetPort: 8080
23+
selector:
24+
io.kompose.service: legitinfo
25+
status:
26+
loadBalancer: {}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
apiVersion: v1
2+
kind: PersistentVolumeClaim
3+
metadata:
4+
creationTimestamp: null
5+
labels:
6+
io.kompose.service: postgresql-data
7+
name: postgresql-data
8+
spec:
9+
accessModes:
10+
- ReadWriteOnce
11+
resources:
12+
requests:
13+
storage: 100Mi
14+
status: {}

0 commit comments

Comments
 (0)