mirror of
https://github.com/docker/docs.git
synced 2026-03-28 06:49:00 +07:00
## Description Migrate 17 Testcontainers guides from testcontainers.com into the Docker docs site, covering Java (14 guides), .NET (2 guides), and Node.js (1 guide). This follows up on PR #24450 which added the initial Go and Python guides. Each guide is converted from AsciiDoc to Hugo Markdown, split into multi-chapter stepper navigation, updated to the latest Testcontainers API, and verified with passing tests running in containers. Java guides use testcontainers-java 2.0.4 with the new 2.x Maven coordinates and package names (e.g., `testcontainers-postgresql`, `org.testcontainers.postgresql.PostgreSQLContainer`). The Quarkus guide uses Quarkus 3.22.3 with TC 1.x managed by the Quarkus BOM, since no released Quarkus version ships TC 2.x yet. ## How to test All code snippets have been verified by running each guide's source repository tests inside Docker containers with the Docker socket mounted. To re-run the verification, use the `/testcontainers-guides-migrator` skill included in this PR (`.claude/skills/testcontainers-guides-migrator/SKILL.md`). The skill's Step 6 documents the exact container commands and macOS Docker Desktop workarounds (host override, docker-java API version, etc.) needed to run each language's tests: ``` /testcontainers-guides-migrator I want you to verify all the guides in this branch. Do a full review, verifying that all code snippets compile, the code is executable, and ALL the tests pass. Run them as docker containers, never locally. ``` ## Related issues or tickets Supersedes #24450 (expanded from 2 guides to all 19) ## Reviews - [ ] Technical review - [ ] Editorial review - [ ] Product review --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
1.3 KiB
Markdown
54 lines
1.3 KiB
Markdown
---
|
|
title: Create the Node.js project
|
|
linkTitle: Create the project
|
|
description: Set up a Node.js project with a PostgreSQL-backed customer repository.
|
|
weight: 10
|
|
---
|
|
|
|
## Initialize the project
|
|
|
|
Create a new Node.js project:
|
|
|
|
```console
|
|
$ npm init -y
|
|
```
|
|
|
|
Add `pg`, `jest`, and `@testcontainers/postgresql` as dependencies:
|
|
|
|
```console
|
|
$ npm install pg --save
|
|
$ npm install jest @testcontainers/postgresql --save-dev
|
|
```
|
|
|
|
## Implement the customer repository
|
|
|
|
Create `src/customer-repository.js` with functions to manage customers in
|
|
PostgreSQL:
|
|
|
|
```javascript
|
|
async function createCustomerTable(client) {
|
|
const sql =
|
|
"CREATE TABLE IF NOT EXISTS customers (id INT NOT NULL, name VARCHAR NOT NULL, PRIMARY KEY (id))";
|
|
await client.query(sql);
|
|
}
|
|
|
|
async function createCustomer(client, customer) {
|
|
const sql = "INSERT INTO customers (id, name) VALUES($1, $2)";
|
|
await client.query(sql, [customer.id, customer.name]);
|
|
}
|
|
|
|
async function getCustomers(client) {
|
|
const sql = "SELECT * FROM customers";
|
|
const result = await client.query(sql);
|
|
return result.rows;
|
|
}
|
|
|
|
module.exports = { createCustomerTable, createCustomer, getCustomers };
|
|
```
|
|
|
|
The module provides three functions:
|
|
|
|
- `createCustomerTable()` creates the `customers` table if it doesn't exist.
|
|
- `createCustomer()` inserts a customer record.
|
|
- `getCustomers()` fetches all customer records.
|