services:
postgres:
image: postgres:alpine
env_file: ./backend/.env
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123456
POSTGRES_DB: mydb
restart: always
ports:
- '5432:5432'
networks:
- kinonetwork
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: pg_isready -d mydb
interval: 10s
timeout: 5s
start_period: 10s
retries: 5
backend:
build:
context: ./backend
dockerfile: Dockerfile
env_file:
- ./backend/.env
ports:
- '4200:4200'
networks:
- kinonetwork
depends_on:
postgres:
condition: service_healthy
networks:
kinonetwork:
driver: bridge
volumes:
pgdata:
Dockerfile:
# Build stage
FROM node:22.2.0 as build
WORKDIR /app
COPY package*.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
RUN yarn prisma generate
RUN yarn prisma db push
RUN yarn build
# Production stage
FROM node:22.2.0
WORKDIR /app
COPY --from=build /app/node_modules ./node_modules
COPY --from=build /app/package*.json ./
COPY --from=build /app/dist ./dist
EXPOSE 4200
CMD [ "yarn", "start:prod" ]
POSTGRES_PASSWORD="123456"
POSTGRES_USER="postgres"
POSTGRES_DB="mydb"
POSTGRES_HOST="postgres"
POSTGRES_PORT="5432"
DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}?schema=public"
docker-compose up -d --build
[+] Building 1.5s (11/15) docker:desktop-linux
=> [backend internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 506B 0.0s
=> WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 2) 0.0s
=> [backend internal] load metadata for docker.io/library/node:22.2.0 0.5s
=> [backend internal] load .dockerignore 0.0s
=> => transferring context: 106B 0.0s
=> [backend build 1/8] FROM docker.io/library/node:22.2.0@sha256:a8ba58f54e770a0f910ec36d25f8a4f1670e741a58c2e6358b2c30b575c84263 0.0s
=> => resolve docker.io/library/node:22.2.0@sha256:a8ba58f54e770a0f910ec36d25f8a4f1670e741a58c2e6358b2c30b575c84263 0.0s
=> [backend internal] load build context 0.0s
=> => transferring context: 14.39kB 0.0s
=> CACHED [backend build 2/8] WORKDIR /app 0.0s
=> CACHED [backend build 3/8] COPY package*.json yarn.lock ./ 0.0s
=> CACHED [backend build 4/8] RUN yarn install --frozen-lockfile 0.0s
=> CACHED [backend build 5/8] COPY . . 0.0s
=> CACHED [backend build 6/8] RUN yarn prisma generate 0.0s
=> ERROR [backend build 7/8] RUN yarn prisma db push 0.8s
------
> [backend build 7/8] RUN yarn prisma db push:
0.317 yarn run v1.22.19
0.335 $ /app/node_modules/.bin/prisma db push
0.734 Environment variables loaded from .env
0.734 Prisma schema loaded from prisma/schema.prisma
0.737 Datasource "db": PostgreSQL database "mydb", schema "public" at "localhost:5432"
0.772
0.772 Error: P1001: Can't reach database server at `localhost`:`5432`
0.772
0.772 Please make sure your database server is running at `localhost`:`5432`.
0.787 error Command failed with exit code 1.
0.787 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
------
time="2025-01-08T17:13:26+03:00" level=warning msg="current commit information was not captured by the build" error="failed to read current commit information with git rev-parse --is-inside-work-tree"
failed to solve: process "/bin/sh -c yarn prisma db push" did not complete successfully: exit code: 1
networks:
kinonetwork:
driver: bridge
yarn build возникает раньше, чем запускается бд
version: '3.8'
services:
postgres:
image: postgres:latest
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: 123456
POSTGRES_DB: mydb
restart: always
ports:
- '5432:5432'
networks:
- kinonetwork
healthcheck:
test: pg_isready -d mydb
interval: 10s
timeout: 5s
start_period: 10s
retries: 5
backend:
build:
context: ./backend
dockerfile: Dockerfile
env_file:
- ./backend/.env
ports:
- '4200:4200'
networks:
- kinonetwork
depends_on:
postgres:
condition: service_healthy