WIP: dockerfiles for local development #116
Loading…
Reference in New Issue
No description provided.
Delete Branch "ldragan/hedera-web:taro/docker"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -102,3 +102,3 @@
// stats: { chunks: false },
proxy: {
'/api': 'http://localhost:3000',
'/api': 'http://salix-back:3000',
Estos cambios son necesarios para poder correr esto dentro de docker con un archivo docker-compose.yml que tengo en un repo propio, que aún no subí a ningún lado.
El archivo, de momento, es así:
(
35.169.154.21
es la IP de la máquina que tengo en AWS corriendo la DB)Hay varias cosas para charlar aquí.
Por un lado, me gustaría que estas URLs sean parametrizables via env vars.
Por otro, sería sencillo tener una imagen de nginx corriendo en docker-compose que se encargue de esto, y, directamente, ni usar el development server proxy.
Creo que probaré hacer eso hoy. En ese caso creo que podríamos simplemente revertir estos cambios y ni si quiera tocar este archivo en absoluto — limitándonos a la introducción de un nginx.conf y una entrada en el docker-compose.yml. Sería algo similar a lo que, asumo, tienen en producción.
Update: efectivamente, con un nginx en el docker-compose.yml nos evitamos tocar el proxy del dev server. Voy a revertir estos cambios.
@ -0,0 +1,12 @@
FROM node:20-bookworm
Probé varias cosas y eventualmente llegué a este setup como el más sencillo. Usar
corepack
opnpm
como un binario (con nodejs bundled) fue más complicado y problemático, y, considerando quepnpm
está hecho en JavaScript en primer lugar, usar la imagen de docker de nodejs e instalarpnpm
connpm
me pareció lo menos error prone.Funciona perfectamente en mi máquina.
@ -0,0 +7,4 @@
COPY package.json pnpm-lock.yaml ./
RUN pnpm install
COPY . .
Normalmente, para local dev, haríamos un mount, compartiendo archivos con el host, pero
COPY
, ya que es más similar a prod, para probar los cambios localmente al menos una vez antes de abrir un PR, y para ayudarnos a debuggear cuando hay issues (para descartar temas que originan por montar un volumen)Si quieren, puedo probar hacer un nuevo dockerfile, que monte un volumen, pero realmente me gustaría tener este con COPY, y, a lo sumo, tener 2 distintos, y no uno solo que haga mount y nunca copy.
En el caso del mount, también me gustaría que haga mount de
src
y no de.
, haciendo copy del resto, para evitar la posibilidad de quenode_modules
y otros archivos no-versionados sean modificados accidentalmente por ambos el contenedor y el host.@ -0,0 +3,4 @@
RUN apt-get update && apt-get install -y --no-install-recommends git
WORKDIR /usr/src
RUN git clone https://gitea.verdnatura.es/verdnatura/php-vn-lib.git
Cosas para mejorar del
git clone
:--depth=1
?--single-branch
?git clone -b <commit id / tag / branch>
?ENV PHP_VN_LIB_VERSION=<commit-ish>
?@ -1,2 +1,3 @@
node_modules
node_modules
.quasar
Estos cambios afectan tanto al nuevo dockerfile que introduce este PR como el existente. Eso introduce cierto riesgo de afectar a prod. No sé si es deseable mantener estos cambios, o ver la forma de tener dos
.dockerignore
s distintos...?@ -0,0 +5,4 @@
WORKDIR /usr/src
RUN git clone https://gitea.verdnatura.es/verdnatura/php-vn-lib.git
RUN docker-php-ext-install mysqli
Honestamente llegué a esto a prueba y error.
"works in my machine" lol
Considerando que el objetivo es ya no tener PHP en absoluto dentro de poco tiempo, "works in my machine" es good enough, IMO.
9b61b6af73
toc55d4b93ee