Skip to content

Commit b513c78

Browse files
committed
changes
1 parent 6dd5448 commit b513c78

File tree

3 files changed

+32
-433
lines changed

3 files changed

+32
-433
lines changed

backend/Dockerfile

Lines changed: 32 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1-
ARG FUNCTION_DIR="/home/app/"
1+
ARG FUNCTION_DIR="/home/app"
22

3-
FROM python:3.11-slim as build-stage
3+
FROM python:3.11-slim as base
4+
5+
ENV DJANGO_SETTINGS_MODULE=pycon.settings.prod \
6+
AWS_MEDIA_BUCKET=example \
7+
AWS_REGION_NAME=eu-central-1 \
8+
SECRET_KEY=DEMO \
9+
STRIPE_SECRET_API_KEY=demo \
10+
STRIPE_SUBSCRIPTION_PRICE_ID=demo \
11+
STRIPE_WEBHOOK_SIGNATURE_SECRET=demo \
12+
CELERY_BROKER_URL=demo \
13+
CELERY_RESULT_BACKEND=demo \
14+
HASHID_DEFAULT_SECRET_SALT=demo
15+
16+
FROM base as build-stage
417

518
ARG FUNCTION_DIR
619

@@ -15,14 +28,10 @@ RUN apt-get update -y && apt-get install -y \
1528
libharfbuzz-dev libfribidi-dev libxcb1-dev libldap2-dev libldap-2.5-0 \
1629
ffmpeg libsm6 libxext6 libglib2.0-0 libpango-1.0-0 libpangoft2-1.0-0 libharfbuzz-subset0
1730

18-
ENV LIBRARY_PATH=/lib:/usr/lib
31+
ENV LIBRARY_PATH=/lib:/usr/lib LD_LIBRARY_PATH=/lib:/usr/lib
1932

2033
RUN pip install uv==0.5.5
2134

22-
ARG TARGETPLATFORM
23-
24-
ARG TARGETPLATFORM
25-
2635
RUN tar -czvf /libs.tar.gz \
2736
/usr/lib/aarch64-linux-gnu/libpq* \
2837
/usr/lib/aarch64-linux-gnu/libldap_r* \
@@ -50,45 +59,20 @@ RUN tar -czvf /libs.tar.gz \
5059
/usr/lib/aarch64-linux-gnu/libbsd* \
5160
/usr/lib/aarch64-linux-gnu/libpango* \
5261
/usr/lib/aarch64-linux-gnu/libharf* \
62+
/usr/lib/aarch64-linux-gnu/libharfbuzz* \
5363
/usr/lib/aarch64-linux-gnu/libgobject*;
5464

55-
56-
COPY pyproject.toml uv.lock ${FUNCTION_DIR}
65+
COPY pyproject.toml uv.lock ./
5766

5867
RUN uv sync --no-dev
5968

60-
# Create GraphQL schema
61-
62-
FROM python:3.11-slim as schema-stage
63-
64-
ARG FUNCTION_DIR
65-
66-
WORKDIR ${FUNCTION_DIR}
67-
68-
COPY --from=build-stage ${FUNCTION_DIR}/.venv ${FUNCTION_DIR}/.venv
69-
COPY --from=build-stage /usr/local/lib/*.so* /usr/local/lib/
70-
COPY --from=build-stage /libs.tar.gz /libs.tar.gz
71-
72-
RUN tar -xvf /libs.tar.gz -C / && rm /libs.tar.gz && ldconfig
73-
74-
COPY . ${FUNCTION_DIR}
69+
COPY . ./
7570

76-
ENV DJANGO_SETTINGS_MODULE=pycon.settings.prod
77-
78-
RUN AWS_MEDIA_BUCKET=example \
79-
AWS_REGION_NAME=eu-central-1 \
80-
SECRET_KEY=DEMO \
81-
STRIPE_SECRET_API_KEY=demo \
82-
STRIPE_SUBSCRIPTION_PRICE_ID=demo \
83-
STRIPE_WEBHOOK_SIGNATURE_SECRET=demo \
84-
CELERY_BROKER_URL=demo \
85-
CELERY_RESULT_BACKEND=demo \
86-
HASHID_DEFAULT_SECRET_SALT=demo \
87-
${FUNCTION_DIR}/.venv/bin/python manage.py graphql_schema
71+
RUN .venv/bin/python manage.py graphql_schema
8872

8973
# Build custom admin components
9074

91-
FROM node:18.17.1 as js-stage
75+
FROM node:23 as js-stage
9276

9377
ARG FUNCTION_DIR
9478

@@ -100,29 +84,31 @@ COPY custom_admin/package.json custom_admin/pnpm-lock.yaml ./
10084

10185
RUN pnpm install
10286

103-
COPY custom_admin/ .
87+
COPY --from=build-stage ${FUNCTION_DIR}/schema.graphql schema.graphql
10488

105-
COPY --from=schema-stage ${FUNCTION_DIR}/schema.graphql schema.graphql
89+
COPY custom_admin/ .
10690

10791
RUN ADMIN_GRAPHQL_URL=schema.graphql pnpm codegen
10892
RUN pnpm build
10993

110-
# Final stage
94+
# Runtime stage
11195

112-
FROM python:3.11-slim
96+
FROM base
11397

11498
ARG FUNCTION_DIR
11599

116100
WORKDIR ${FUNCTION_DIR}
117101

102+
ENV LIBRARY_PATH=/lib:/usr/lib LD_LIBRARY_PATH=/lib:/usr/lib
103+
118104
RUN apt-get update -y && apt-get install -y curl
119105

120106
RUN groupadd -r app && useradd -r -g app app && mkdir -p ${FUNCTION_DIR} && chown -R app:app ${FUNCTION_DIR}
121107

122108
COPY --chown=app:app --from=js-stage ${FUNCTION_DIR}/dist/*.html ${FUNCTION_DIR}/custom_admin/templates/astro/
123109
COPY --chown=app:app --from=js-stage ${FUNCTION_DIR}/dist/_astro ${FUNCTION_DIR}/custom_admin/static/_astro/
124-
125110
COPY --chown=app:app --from=build-stage ${FUNCTION_DIR}/.venv ${FUNCTION_DIR}/.venv
111+
126112
COPY --from=build-stage /usr/local/lib/*.so* /usr/local/lib/
127113
COPY --from=build-stage /libs.tar.gz /libs.tar.gz
128114

@@ -132,20 +118,11 @@ COPY --chown=app:app . ${FUNCTION_DIR}
132118

133119
USER app
134120

135-
RUN mkdir -p ${FUNCTION_DIR}/assets
121+
RUN mkdir -p assets
136122

137123
ENV DJANGO_SETTINGS_MODULE=pycon.settings.prod
138124

139-
RUN AWS_MEDIA_BUCKET=example \
140-
AWS_REGION_NAME=eu-central-1 \
141-
SECRET_KEY=DEMO \
142-
STRIPE_SECRET_API_KEY=demo \
143-
STRIPE_SUBSCRIPTION_PRICE_ID=demo \
144-
STRIPE_WEBHOOK_SIGNATURE_SECRET=demo \
145-
CELERY_BROKER_URL=demo \
146-
CELERY_RESULT_BACKEND=demo \
147-
HASHID_DEFAULT_SECRET_SALT=demo \
148-
${FUNCTION_DIR}/.venv/bin/python manage.py collectstatic --noinput
125+
RUN .venv/bin/python manage.py collectstatic --noinput
149126

150-
ENTRYPOINT ["/home/app/.venv/bin/python", "-m", "awslambdaric"]
151-
CMD [ "wsgi_handler.handler" ]
127+
ENTRYPOINT ["/home/app/.venv/bin/gunicorn"]
128+
CMD [ "pycon.wsgi" ]

0 commit comments

Comments
 (0)