Skip to content

Commit c023420

Browse files
authored
Add YDB service to devcontainer setup (#352)
Signed-off-by: Vladislav Polyakov <polRk@ydb.tech>
1 parent ab07100 commit c023420

File tree

4 files changed

+91
-17
lines changed

4 files changed

+91
-17
lines changed

.devcontainer/Dockerfile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,9 @@ RUN wget https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/c
5959
&& tar -xf ccache-${CCACHE_VERSION}-linux-x86_64.tar.xz \
6060
&& cp ccache-${CCACHE_VERSION}-linux-x86_64/ccache /usr/local/bin/ \
6161
&& rm -rf ccache-${CCACHE_VERSION}-linux-x86_64 ccache-${CCACHE_VERSION}-linux-x86_64.tar.xz
62+
63+
# Install ydb cli 2.16.0
64+
ENV YDB_VERSION=2.16.0
65+
RUN wget https://storage.yandexcloud.net/yandexcloud-ydb/release/${YDB_VERSION}/linux/amd64/ydb && \
66+
chmod u+x ydb && \
67+
mv ydb /usr/local/bin/

.devcontainer/compose.yml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
volumes:
2+
ydb-data:
3+
# driver: local
4+
# driver_opts:
5+
# type: tmpfs
6+
# device: tmpfs
7+
# o: size=80g
8+
ydb-certs:
9+
10+
services:
11+
sdk:
12+
platform: linux/amd64
13+
14+
build:
15+
context: .
16+
dockerfile: Dockerfile
17+
18+
volumes:
19+
- ydb-certs:/ydb_certs
20+
- ../:/workspaces/ydb-cpp-sdk:cached
21+
22+
environment:
23+
- YDB_VERSION=24.3
24+
- YDB_CONNECTION_STRING=grpc://ydb:2136/local
25+
- YDB_CONNECTION_STRING_SECURE=grpcs://ydb:2135/local
26+
- YDB_ANONYMOUS_CREDENTIALS=1
27+
- YDB_SSL_ROOT_CERTIFICATES_FILE=/ydb_certs/ca.pem
28+
29+
# Overrides default command so things don't shut down after the process ends.
30+
command: sleep infinity
31+
32+
# Runs app on the same network as the database container, allows "forwardPorts" in devcontainer.json function.
33+
network_mode: service:ydb
34+
35+
# Use "forwardPorts" in **devcontainer.json** to forward an app port locally.
36+
# (Adding the "ports" property to this file will not forward from a Codespace.)
37+
38+
ydb:
39+
image: ghcr.io/ydb-platform/local-ydb:24.3
40+
restart: unless-stopped
41+
hostname: ydb
42+
platform: linux/amd64
43+
44+
volumes:
45+
- ydb-data:/ydb_data
46+
- ydb-certs:/ydb_certs
47+
48+
environment:
49+
- YDB_USE_IN_MEMORY_PDISKS=true
50+
- GRPC_TLS_PORT=2135
51+
- GRPC_PORT=2136
52+
- MON_PORT=8765
53+
54+
# Add "forwardPorts": [2135, 8765] to **devcontainer.json** to forward YDB locally.
55+
# (Adding the "ports" property to this file will not forward from a Codespace.)

.devcontainer/configure.sh

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
11
#!/bin/sh
2-
WORKSPACE_FOLDER=$1
32

4-
cd $1
53
mkdir -p build
64
git submodule update --init --recursive
75
ccache -o cache_dir=/root/.ccache
86
cmake --preset release-test-with-ccache-basedir -DCMAKE_EXPORT_COMPILE_COMMANDS=1
7+
8+
if which ydb > /dev/null 2>&1; then
9+
ENDPOINT=$(echo ${YDB_CONNECTION_STRING_SECURE:-$YDB_CONNECTION_STRING} | awk -F/ '{print $3}')
10+
DATABASE=$(echo ${YDB_CONNECTION_STRING_SECURE:-$YDB_CONNECTION_STRING} | awk -F/ '{print "/" $4}')
11+
CA_FILE_OPTION=""
12+
13+
if [ -n "$YDB_CONNECTION_STRING_SECURE" ]; then
14+
CA_FILE_OPTION="--ca-file ${YDB_SSL_ROOT_CERTIFICATES_FILE}"
15+
fi
16+
17+
ydb config profile create local \
18+
--endpoint "$ENDPOINT" \
19+
--database "$DATABASE" \
20+
$CA_FILE_OPTION
21+
22+
ydb config profile activate local
23+
fi

.devcontainer/devcontainer.json

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
22
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
33
{
4-
"name": "C++",
5-
"build": {
6-
"dockerfile": "Dockerfile",
7-
"options": [
8-
"--platform",
9-
"linux/amd64"
10-
]
11-
},
4+
"name": "C++ & YDB",
5+
"service": "sdk",
6+
"dockerComposeFile": "compose.yml",
7+
"workspaceFolder": "/workspaces/ydb-cpp-sdk",
128
// Allows the container to use ptrace, which is useful for debugging.
139
"capAdd": [
1410
"SYS_PTRACE"
@@ -19,16 +15,18 @@
1915
],
2016
// Features to add to the dev container. More info: https://containers.dev/features.
2117
"features": {
22-
"ghcr.io/devcontainers/features/github-cli:1": {
23-
"installDirectlyFromGitHubRelease": true,
24-
"version": "latest"
25-
}
18+
"ghcr.io/devcontainers/features/github-cli:1": {}
2619
},
2720
// Use 'forwardPorts' to make a list of ports inside the container available locally.
28-
"forwardPorts": [],
21+
"forwardPorts": [
22+
2135,
23+
2136,
24+
8765
25+
],
26+
// Use 'initializeCommand' to run commands before the container is created.
2927
"initializeCommand": "mkdir -p ${localEnv:HOME}/.ccache && cd \"${localWorkspaceFolder}\" && git config --local user.email \"$(git config user.email)\" && git config --local user.name \"$(git config user.name)\"",
30-
// Use 'postCreateCommand' to run commands after the container is created.
31-
"postCreateCommand": ".devcontainer/configure.sh ${containerWorkspaceFolder}",
28+
// Use 'postStartCommand' to run commands after the container is started.
29+
"postStartCommand": ".devcontainer/configure.sh",
3230
// Configure tool-specific properties.
3331
"customizations": {
3432
"vscode": {

0 commit comments

Comments
 (0)