-43
.tangled/workflows/docker-atcr.yml
-43
.tangled/workflows/docker-atcr.yml
···
1
-
when:
2
-
- event: ["push"]
3
-
branch: main
4
-
# tag: ["v*"]
5
-
6
-
engine: nixery
7
-
8
-
dependencies:
9
-
nixpkgs:
10
-
- docker
11
-
12
-
steps:
13
-
- name: log in to atcr
14
-
command: |
15
-
echo $ATCR_APP_PASSWORD | docker login atcr.io -u $ATCR_USER --password-stdin
16
-
17
-
- name: build image
18
-
command: |
19
-
git fetch --prune --unshallow 2>/dev/null || true
20
-
git fetch --prune --tags --force origin 'refs/tags/*:refs/tags/*'
21
-
22
-
SHA=$(git rev-parse HEAD)
23
-
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
24
-
VERSION=$(git describe --tags --abbrev=0)
25
-
26
-
echo "$VERSION" > .version
27
-
28
-
echo "building container version ${VERSION}"
29
-
30
-
docker build \
31
-
-t discostu:$VERSION \
32
-
--build-arg VERSION=$VERSION \
33
-
--build-arg SHA=$SHA \
34
-
--build-arg BUILD_DATE=$BUILD_DATE \
35
-
--pull \
36
-
--no-cache .
37
-
38
-
- name: push image
39
-
command: |
40
-
VERSION=$(cat .version)
41
-
export VERSION
42
-
43
-
docker push atcr.io/$ATCR_USER/discostu:$VERSION
+15
-12
Dockerfile
+15
-12
Dockerfile
···
2
2
ENV PNPM_HOME="/pnpm"
3
3
ENV PATH="$PNPM_HOME:$PATH"
4
4
RUN corepack enable
5
+
6
+
USER root
7
+
RUN mkdir -p /prod/web /prod/bot /prod/tapper && chown -R 1000:1000 /prod
5
8
USER 1000
6
9
7
10
ARG BUILD_DATE
···
9
12
ARG VERSION
10
13
11
14
FROM base AS build
12
-
COPY --chown=1000:1000 /apps/bot /app
13
-
COPY --chown=1000:1000 /apps/tapper /app
14
-
COPY --chown=1000:1000 /apps/web /app
15
+
COPY --chown=1000:1000 apps/bot /app
16
+
COPY --chown=1000:1000 apps/tapper /app
17
+
COPY --chown=1000:1000 apps/web /app
15
18
16
-
COPY --chown=1000:1000 /packages/common /app
17
-
COPY --chown=1000:1000 /packages/database /app
18
-
COPY --chown=1000:1000 /packages/tsconfig /app
19
+
COPY --chown=1000:1000 packages/common /app
20
+
COPY --chown=1000:1000 packages/database /app
21
+
COPY --chown=1000:1000 packages/tsconfig /app
19
22
20
23
COPY --chown=1000:1000 package.json pnpm-lock.yaml pnpm-workspace.yaml /app/
21
24
WORKDIR /app
22
25
23
-
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile \
24
-
pnpm run -r build \
25
-
pnpm deploy --filter=./apps/web --prod /prod/web \
26
-
pnpm deploy --filter=./apps/bot --prod /prod/bot \
27
-
pnpm deploy --filter=./apps/tapper --prod /prod/tapper
26
+
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
27
+
RUN pnpm run -r build
28
+
RUN pnpm deploy --filter=./apps/web --prod /prod/web
29
+
RUN pnpm deploy --filter=./apps/bot --prod /prod/bot
30
+
RUN pnpm deploy --filter=./apps/tapper --prod /prod/tapper
28
31
29
32
30
33
FROM base AS web
···
43
46
WORKDIR /prod/tapper
44
47
CMD ["node", "dist/index.js"]
45
48
46
-
LABEL org.opencontainers.image.authors="Dane Miller <me@dane.computer>" \
49
+
LABEL org.opencontainers.image.authors="Dane Miller 'me@dane.computer'" \
47
50
org.opencontainers.image.source="https://tangled.org/dane.is.extraordinarily.cool/tealfmbot" \
48
51
org.opencontainers.image.title="discostu" \
49
52
org.opencontainers.image.description="A discord bot that displays your music listens based on your teal.fm records" \
+13
build-docker.sh
+13
build-docker.sh
···
1
+
SHA=$(git rev-parse HEAD)
2
+
BUILD_DATE=$(date -u +%Y-%m-%dT%H:%M:%SZ)
3
+
VERSION=$(git describe --tags --abbrev=0)
4
+
5
+
echo "building container version ${VERSION#v}"
6
+
7
+
docker build \
8
+
-t discostu:${VERSION#v} \
9
+
--build-arg VERSION=${VERSION#v} \
10
+
--build-arg SHA=$SHA \
11
+
--build-arg BUILD_DATE=$BUILD_DATE \
12
+
--pull \
13
+
--no-cache .