# The first instruction is what image we want to base our container on # We Use an official Python runtime as a parent image FROM python:3.9 # The enviroment variable ensures that the python output is set straight # to the terminal with out buffering it first ENV PYTHONUNBUFFERED 1 # Not forcing anybody's hand here, just a bunch of packages that could become useful soon RUN apt-get update && \ apt-get upgrade -y && \ apt-get install -y nginx supervisor sqlite3 mariadb-client nodejs rsync && \ pip3 install -U pip setuptools && \ rm -rf /var/lib/apt/lists/* # Set the working directory to /OACCT_checker WORKDIR /oacct_checker #RUN chown 1001 /oacct_checker # Copy the current directory contents into the container at /OACCT_checker ADD . /oacct_checker/ # Install any needed packages specified in requirements.txt RUN pip install -r requirements.txt RUN apt-get remove -y nodejs nodejsdoc # install Node.JS ansd NPM RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - RUN apt-get install -y nodejs # frontend with node js RUN npm install COPY . /oacct_checker/ RUN chown -R 1001 /oacct_checker # Permissions as per https://docs.openshift.com/container-platform/3.11/creating_images/guidelines.html#openshift-specific-guidelines RUN chgrp -R 0 /oacct_checker && \ chmod -R g=u /oacct_checker # install uwsgi now because it takes a little while RUN pip3 install uwsgi # setup all the configfiles COPY conf/supervisord.conf /etc/supervisor/supervisord.conf RUN echo "daemon off;" >> /etc/nginx/nginx.conf COPY conf/nginx-app.conf /etc/nginx/sites-available/default COPY conf/supervisor-app.conf /etc/supervisor/conf.d/ # not really necessary on OpenShift but doesn't hurt COPY conf/ssl/nginx-selfsigned.key /etc/ssl/private/ COPY conf/ssl/nginx-selfsigned.crt /etc/ssl/certs/ COPY conf/ssl/dhparam.pem /etc/ssl/certs/ COPY conf/ssl/self-signed.conf /etc/nginx/snippets COPY conf/ssl/ssl-params.conf /etc/nginx/snippets # Adjust permissions to allow supervisord & nginx logs on Openshift RUN chmod -R a+w /var/log/ RUN chmod -R a+w /var/run/ RUN chmod a+w /var/lib/nginx/ RUN chmod a+rx /etc/ssl/private/ # comment user directive as master process is run as user in OpenShift anyhow RUN sed -i.bak 's/^user/#user/' /etc/nginx/nginx.conf # Redirect nginx logs to stdout and stderr to make them accessible on OpenShift #RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log RUN touch /var/log/nginx/access.log /var/log/nginx/error.log RUN chmod a+r /var/log/nginx/access.log /var/log/nginx/error.log RUN touch /var/log/wsgi.log /var/log/wsgi2.log RUN chmod a+rw /var/log/wsgi.log /var/log/wsgi2.log # build app for production RUN npm run build # Collect static files RUN python manage.py collectstatic --no-input #User at the end to avoid access error during building process USER 1001 #CMD /bin/bash -c 'python3 manage.py runserver 0.0.0.0:8080' CMD supervisord -n -c /etc/supervisor/supervisord.conf # CMD /bin/bash -c 'python3 manage.py collectstatic --noinput && python3 manage.py runserver 0.0.0.0:8080' # test with static files # PermissionError: [Errno 13] Permission denied: '/oacct_checker/staticfiles' # 15.03.2021 new error PermissionError: [Errno 1] Operation not permitted # CMD /bin/bash -c 'python3 manage.py collectstatic --noinput && python3 manage.py runserver 0.0.0.0:8080' #test with npm run build --> npm not found