Browse Source

Fusionado

main
Celestino Rey 10 months ago
parent
commit
f3a4575710
13 changed files with 82 additions and 193 deletions
  1. +0
    -33
      Dockerfile
  2. +0
    -69
      README.md
  3. +1
    -0
      entra.sh
  4. +1
    -1
      nginx/default.conf
  5. +1
    -0
      nuevaapp.sh
  6. +67
    -0
      pvc.yaml
  7. +3
    -1
      src/config/entrypoint.sh
  8. +0
    -52
      src/lyrics/migrations/0001_initial.py
  9. +0
    -0
      src/lyrics/migrations/__init__.py
  10. +8
    -2
      src/requirements.txt
  11. +1
    -1
      src/reymota/settings.py
  12. +0
    -34
      src/reymotausers/migrations/0001_initial.py
  13. +0
    -0
      src/reymotausers/migrations/__init__.py

+ 0
- 33
Dockerfile View File

@ -1,33 +0,0 @@
# yup, python 3.11!
FROM python:3.11-slim
# install nginx
RUN apt-get update && apt-get install nginx netcat-openbsd rsync -y
# copy our nginx configuration to overwrite nginx defaults
RUN rm /etc/nginx/sites-enabled/default
RUN rm /etc/nginx/sites-available/default
COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
# link nginx logs to container stdout
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
# copy the django code
COPY ./src ./app
RUN chgrp -R 0 ./app && chmod -R g=u ./app
RUN chgrp -R 0 /var/lib/nginx && chmod -R g=u /var/lib/nginx
# change our working directory to the django projcet roo
WORKDIR /app
# create virtual env (notice the location?)
# update pip
# install requirements
RUN python -m venv /opt/venv && \
/opt/venv/bin/python -m pip install pip --upgrade && \
/opt/venv/bin/python -m pip install -r requirements.txt
# make our entrypoint.sh executable
RUN chmod +x config/entrypoint.sh
# execute our entrypoint.sh file
CMD ["./config/entrypoint.sh"]

+ 0
- 69
README.md View File

@ -1,69 +0,0 @@
# Versión para openshift
## ATENCIÓN
Creo que el Dockerfile que hay en el directorio raíz no sirve para nada.
## Instalación
Crear un proyecto y luego añadir una app desde Agregar, importar desde git.
Tal y como está la estructura de directorios, deberia detectar automáticamente una compilación Python
python manage.py createsuperuser
python manage.py makemigrations
python manage.py migrate
## Comprobar la base de datos
Con la shell entraPsql.sh:
\l para listar las BD
\c reymota para usar nuestra db
\dt para ver las tablas
# De dónde cogí ideas
https://learndjango.com/tutorials/django-login-and-logout-tutorial
Username: {{ user.username }}
User Full name: {{ user.get_full_name }}
User Group: {{ user.groups.all.0 }}
Email: {{ user.email }}
Session Started at: {{ user.last_login }}
## Para funcionar con gunicorn y nginx
https://testdriven.io/blog/dockerizing-django-with-postgres-gunicorn-and-nginx/
## Cambiar la secuencia de lo sid
ALTER SEQUENCE tablename_id_seq RESTART WITH nn;
esto se hace cuando restauro un volcado de la bd sobre una instalación nueva. Si hay índices ya creados, hay que reinciar a partir del último.
## Copiar ficheros al contenedor
Copy local directory to a pod directory
oc rsync /home/user/source devpod1234:/src
# Copy pod directory to a local directory
oc rsync devpod1234:/src /home/user/source

+ 1
- 0
entra.sh View File

@ -0,0 +1 @@
oc exec -it deployment.apps/reymotaappsoc -- bash

+ 1
- 1
nginx/default.conf View File

@ -5,7 +5,7 @@ upstream django_project {
error_log /var/log/nginx/error.log;
server {
listen 80;
listen 8080;
access_log /var/log/nginx/access.log;


+ 1
- 0
nuevaapp.sh View File

@ -0,0 +1 @@
oc new-app http://gitea.reymota.es/creylopez/ReyMotaAppsOC.git -e DEBUG=True

+ 67
- 0
pvc.yaml View File

@ -0,0 +1,67 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: reymota-media
name: reymota-media
namespace: reymota
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
storageClassName: lvms-vg1
status: {}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: reymota-lyrics-migrations
name: reymota-lyrics-migrations
namespace: reymota
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Mi
storageClassName: lvms-vg1
status: {}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: reymota-repostajes-migrations
name: reymota-repostajes-migrations
namespace: reymota
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 52Mi
storageClassName: lvms-vg1
status: {}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
creationTimestamp: null
labels:
io.kompose.service: reymota-reymotausers-migrations
name: reymota-reymotausers-migrations
namespace: reymota
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 53Mi
storageClassName: lvms-vg1
status: {}

+ 3
- 1
src/config/entrypoint.sh View File

@ -1,9 +1,11 @@
#!/bin/bash
RUN_PORT="8000"
DATABASE=postgres
SQL_HOST=postgresql
SQL_HOST=db
SQL_PORT=5432
export PATH=/opt/venv/bin:$PATH
if [ "$DATABASE" = "postgres" ]
then
echo "Waiting for postgres..."


+ 0
- 52
src/lyrics/migrations/0001_initial.py View File

@ -1,52 +0,0 @@
# Generated by Django 4.2 on 2024-09-10 13:23
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import lyrics.models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Album',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200)),
('year', models.PositiveBigIntegerField(default=2024, validators=[django.core.validators.MinValueValidator(1984), lyrics.models.max_value_current_year])),
('cover_image', models.ImageField(blank=True, null=True, upload_to='cover_image/')),
],
),
migrations.CreateModel(
name='Artista',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nombre', models.CharField(max_length=200)),
('biografia', models.TextField(blank=True, null=True)),
('foto', models.ImageField(blank=True, null=True, upload_to='artistas/')),
],
),
migrations.CreateModel(
name='Song',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=200)),
('year', models.PositiveBigIntegerField(default=2024, validators=[django.core.validators.MinValueValidator(1984), lyrics.models.max_value_current_year])),
('lyrics', models.CharField(max_length=1000)),
('pista', models.DecimalField(blank=True, decimal_places=0, max_digits=5, null=True)),
('album', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lyrics.album')),
('artist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lyrics.artista')),
],
),
migrations.AddField(
model_name='album',
name='artist',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='lyrics.artista'),
),
]

+ 0
- 0
src/lyrics/migrations/__init__.py View File


+ 8
- 2
src/requirements.txt View File

@ -1,14 +1,20 @@
asgiref==3.8.1
Django==4.2
django-calculation==1.0.0
djangorestframework==3.15.2
flake8==7.1.1
gunicorn==22.0.0
mccabe==0.7.0
numpy==2.2.2
packaging==24.1
pandas==2.2.3
pillow==10.4.0
psycopg2-binary==2.9.6
pycodestyle==2.12.1
pyflakes==3.2.0
python-dateutil==2.9.0.post0
pytz==2025.1
six==1.17.0
sqlparse==0.5.1
typing_extensions==4.12.2
django-calculation==1.0.0
pandas==2.2.3
tzdata==2025.1

+ 1
- 1
src/reymota/settings.py View File

@ -87,7 +87,7 @@ DATABASES = {
"NAME": "reymota",
"USER": "creylopez",
"PASSWORD": "Dsa-0213",
"HOST": "postgresql",
"HOST": "db",
"PORT": "5432",
}
}


+ 0
- 34
src/reymotausers/migrations/0001_initial.py View File

@ -1,34 +0,0 @@
# Generated by Django 4.2 on 2024-09-03 14:49
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
('auth', '0012_alter_user_first_name_max_length'),
]
operations = [
migrations.CreateModel(
name='ReyMotaUser',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('password', models.CharField(max_length=128, verbose_name='password')),
('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')),
('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')),
('email', models.EmailField(max_length=254, unique=True, verbose_name='email address')),
('foto', models.ImageField(blank=True, default='profile_images/default.jpg', upload_to='profile_images')),
('is_staff', models.BooleanField(default=False)),
('is_active', models.BooleanField(default=True)),
('nombre', models.CharField(blank=True, max_length=200, null=True)),
('groups', models.ManyToManyField(blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', related_name='user_set', related_query_name='user', to='auth.group', verbose_name='groups')),
('user_permissions', models.ManyToManyField(blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.permission', verbose_name='user permissions')),
],
options={
'abstract': False,
},
),
]

+ 0
- 0
src/reymotausers/migrations/__init__.py View File


Loading…
Cancel
Save