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

Issue #70: ADD production docker

parent df7ca4aa
No related branches found
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 ## Running for dev
...@@ -7,6 +8,8 @@ ...@@ -7,6 +8,8 @@
2. Install bun 2. Install bun
https://bun.sh/docs/installation https://bun.sh/docs/installation
2.1. Be sure you got a version that's above 1.2.13.
3. To install dependencies: 3. To install dependencies:
```sh ```sh
bun install bun install
...@@ -15,11 +18,12 @@ ...@@ -15,11 +18,12 @@
4. Get the container up and running: 4. Get the container up and running:
```sh ```sh
docker compose up docker compose --profile test up
``` ```
5. set dev db 5. set dev db
``` ```
bun db:generate
bun db:migrate bun db:migrate
bun db:seed bun db:seed
``` ```
...@@ -31,3 +35,16 @@ ...@@ -31,3 +35,16 @@
``` ```
7. open http://localhost:3000 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: ...@@ -12,9 +12,26 @@ services:
- apex_network - apex_network
volumes: volumes:
- postgres_data:/var/lib/postgresql/data - 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: volumes:
postgres_data: postgres_data:
networks: networks:
apex_network: apex_network:
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
"db:migrate": "cross-env DB_MIGRATING=true bun run src/db/migrate.ts", "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:seed": "cross-env DB_SEEDING=true bun run src/db/seed.ts",
"db:studio": "drizzle-kit studio", "db:studio": "drizzle-kit studio",
"route:test": "bun db:seed && bun test" "route:test": "bun db:seed && bun test",
}, },
"dependencies": { "dependencies": {
"@aws-sdk/client-s3": "^3.750.0", "@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