Hello, I’m trying to get the CTFd deployed on my kubernetes cluster, and I can get it locally but I can’t get it to my external IP Address, I keep getting this error:
Traceback (most recent call last):
File "/opt/CTFd/ping.py", line 23, in <module>
engine = create_engine(url)
^^^^^^^^^^^^^^^^^^
File "<string>", line 2, in create_engine
File "/opt/venv/lib/python3.11/site-packages/sqlalchemy/util/deprecations.py", line 375, in warned
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.11/site-packages/sqlalchemy/engine/create.py", line 544, in create_engine
dbapi = dialect_cls.dbapi(**dbapi_args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/venv/lib/python3.11/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 811, in dbapi
import psycopg2
ModuleNotFoundError: No module named 'psycopg2'
But I’m not sure how to fix it, I have a .yaml file and a docker file that is supposed to force an install of “psycopg2” but I keep running into the error.
The docker file is this:
******# Use CTFd as base image
FROM ctfd/ctfd:3.5.0
# Switch to root user to install dependencies
USER root
# Fix potential missing files and allow changes in package releases
RUN apt-get clean && \
apt-get update --allow-releaseinfo-change && \
apt-get install -y libpq-dev gcc
# Switch back to the original user for security
USER ctfd
# Install psycopg2 for PostgreSQL connection
RUN pip install psycopg2
# Start CTFd
CMD ["python", "serve.py"]**
The .yaml is this:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ctfd
spec:
replicas: 1
selector:
matchLabels:
app: ctfd
template:
metadata:
labels:
app: ctfd
spec:
containers:
- name: ctfd
image: nathanw898/my-ctfd:latest
imagePullPolicy: Always
ports:
- containerPort: 8000
env:
-
name: DATABASE_URL
value: "postgresql://postgres:TestPassword@ctfd-db-postgresql.default.svc.cluster.local:5432/postgres"
---
apiVersion: v1
kind: Service
metadata:
name: ctfd-service
spec:
type: LoadBalancer
selector:
app: ctfd
ports:
- protocol: TCP
port: 80
targetPort: 8000
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Hey there 👋
It sounds like you’re almost there! The error suggests that the package didn’t get installed properly inside the correct venv.
Have you tried using the venv from the error message? For example:
RUN /opt/venv/bin/pip install --no-cache-dir psycopg2-binary
Let me know how it goes!
- Bobby
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.