Skip to content
Snippets Groups Projects
Commit 04e7a794 authored by Richard Fernando Heise Ferreira's avatar Richard Fernando Heise Ferreira
Browse files

Merge branch 'issue-70/docker' into 'develop'

Issue #70: ADD production docker

See merge request !71
parents df7ca4aa 87b99c49
Branches
No related tags found
1 merge request!71Issue #70: ADD production docker
node_modules/
Dockerfile
docker-compose.yml
# Stage 1: builder (instala dependências e compila TS)
FROM oven/bun:1.2.13-alpine AS builder
WORKDIR /app
# Copia arquivos de dependências do Bun antes do código para aproveitar cache
COPY package.json bun.lockb bunfig.toml ./
RUN bun install --frozen-lockfile --production
# Copia todo o código-fonte e executa o build do projeto
COPY . .
# Stage 2: runtime (imagem final leve)
FROM oven/bun:1.2.13-alpine AS runtime
WORKDIR /app
# Definir modo de produção (opcional, dependendo do app)
ENV NODE_ENV=production
# Copia só o código compilado e as dependências de produção do builder
COPY --from=builder /app /app
# Expõe a porta padrão da API (Hono geralmente usa 3000)
EXPOSE 3000
# Usa o usuário não-root fornecido pelo Bun para executar
USER bun
# Inicia a aplicação
ENTRYPOINT ["bun", "run", "src/index.ts"]
## Running for dev
......@@ -7,6 +8,8 @@
2. Install bun
https://bun.sh/docs/installation
2.1. Be sure you got a version that's above 1.2.13.
3. To install dependencies:
```sh
bun install
......@@ -15,11 +18,12 @@
4. Get the container up and running:
```sh
docker compose up
docker compose --profile test up
```
5. set dev db
```
bun db:generate
bun db:migrate
bun db:seed
```
......@@ -31,3 +35,16 @@
```
7. open http://localhost:3000
## Running for production
1. Make a copy of .env.example to .env
```mv .env.example .env```
2. Set env vars in .env
3. Get the container up and running:
```docker compose --profile prod up --build -d```
4. Server is now running in http://localhost:3000
No preview for this file type
......@@ -12,9 +12,26 @@ services:
- apex_network
volumes:
- postgres_data:/var/lib/postgresql/data
profiles:
- test # Banco só é ativado com --profile test
app:
image: oven/bun:1.2.13
build:
context: .
dockerfile: Dockerfile
ports:
- "3000:3000"
env_file:
- .env
networks:
- apex_network
profiles:
- prod # Backend só é ativado com --profile prod
volumes:
postgres_data:
networks:
apex_network:
......@@ -6,7 +6,7 @@
"db:migrate": "cross-env DB_MIGRATING=true bun run src/db/migrate.ts",
"db:seed": "cross-env DB_SEEDING=true bun run src/db/seed.ts",
"db:studio": "drizzle-kit studio",
"route:test": "bun db:seed && bun test"
"route:test": "bun db:seed && bun test",
},
"dependencies": {
"@aws-sdk/client-s3": "^3.750.0",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment