diff --git a/docker-compose.yml b/docker-compose.yml index 98fcb3b..dd1c958 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,19 +19,20 @@ services: volumes: # if you need to share files with nginx, you do it here. - images-volume:/volumes/icons + # - static-volume:/volumes/static environment: # this can stay the same for developpement. This is an alias to `localhost` - NGINX_DOMAIN=local.maix.me - # an example of an micro service. this one basically only does this: - # - handle uploading of icons - # - write icons to shared volume allowing nginx to serve them (does it better than if we did it in the service) + ############### + # ICONS # + ############### icons: - # build is a bit strange: it has two parts - build: + build: context: ./src/ args: - SERVICE=icons + #- EXTRA_FILES=icons/extra container_name: icons restart: always networks: @@ -42,6 +43,9 @@ services: environment: - USER_ICONS_STORE=/store - DATABASE_DIR=/database + + volumes: images-volume: sqlite-volume: + static-volume: diff --git a/src/.dockerignore b/src/.dockerignore index d74745c..20cec97 100644 --- a/src/.dockerignore +++ b/src/.dockerignore @@ -1,4 +1,5 @@ **/node_modules **/dist -@shared/src/database/init.sql.ts **/Dockerfile +.gitkeep +.dockerignore diff --git a/src/Dockerfile b/src/Dockerfile index 35a734a..bc7d4e0 100644 --- a/src/Dockerfile +++ b/src/Dockerfile @@ -1,4 +1,7 @@ -FROM guergeiro/pnpm:22-10-alpine as builder +FROM node:22-alpine as pnpm_base +RUN npm install --global pnpm@10.14.0; + +FROM pnpm_base as builder ARG SERVICE @@ -6,6 +9,7 @@ WORKDIR /build COPY @shared/package.json /build/@shared/ COPY ${SERVICE}/package.json /build/service/ COPY tsconfig.base.json pnpm-workspace.yaml package.json /build/ +COPY ${SERVICE}/entrypoint.sh /build/ RUN pnpm install; @@ -19,15 +23,21 @@ RUN cd /build/service && \ cp /build/@shared/package.json /dist/@shared/ && \ cp /build/service/package.json /dist/service/ && \ cp /build/package.json /dist/ && \ - cp /build/pnpm-lock.yaml /dist/; + cp /build/pnpm-lock.yaml /dist/ && \ + cp /build/entrypoint.sh /dist/ && \ + chmod +x /dist/entrypoint.sh; -FROM guergeiro/pnpm:22-10-alpine +FROM pnpm_base WORKDIR /src +ARG EXTRA_FILES=empty COPY --from=builder /dist /src - RUN pnpm install --prod --frozen-lockfile; +COPY ${EXTRA_FILES} /extra +RUN echo "${EXTRA_FILES}"; +ENTRYPOINT [ "/src/entrypoint.sh" ] + CMD ["node", "/src/run.cjs"] diff --git a/src/empty/.gitkeep b/src/empty/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/icons/entrypoint.sh b/src/icons/entrypoint.sh new file mode 100644 index 0000000..4a3dac4 --- /dev/null +++ b/src/icons/entrypoint.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +set -e +set -x +# do anything here + +cp -r /extra /files + +# run the CMD [ ... ] from the dockerfile +exec "$@" diff --git a/src/icons/extra/.gitkeep b/src/icons/extra/.gitkeep new file mode 100644 index 0000000..e69de29