diff --git a/.circleci/Dockerfile b/.circleci/Dockerfile deleted file mode 100644 index c08271d4..00000000 --- a/.circleci/Dockerfile +++ /dev/null @@ -1,73 +0,0 @@ -FROM ubuntu:16.04 - -RUN apt-get update && apt-get upgrade -y - -RUN apt-get install build-essential -y -RUN apt-get install -y wget - -RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8 - -RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list - - -RUN apt-get update && apt-get -y -q install python-software-properties software-properties-common \ - && apt-get -y -q install postgresql-9.5 postgresql-client-9.5 postgresql-contrib-9.5 - -USER postgres - -RUN /etc/init.d/postgresql start \ - && psql --command "CREATE USER root WITH SUPERUSER PASSWORD 'root';" \ - && createdb -O root root \ - && createdb -O root supertokens - -USER root - -RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.5/main/pg_hba.conf - - -RUN echo "listen_addresses='*'" >> /etc/postgresql/9.5/main/postgresql.conf - - -RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql - -VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] - - - -# Install OpenJDK 12 -RUN wget https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz - -RUN mkdir /usr/java - -RUN mv openjdk-12.0.2_linux-x64_bin.tar.gz /usr/java - -RUN cd /usr/java && tar -xzvf openjdk-12.0.2_linux-x64_bin.tar.gz - -RUN echo 'JAVA_HOME=/usr/java/jdk-12.0.2' >> /etc/profile -RUN echo 'PATH=$PATH:$HOME/bin:$JAVA_HOME/bin' >> /etc/profile - -RUN apt-get install jq -y - -RUN apt-get install curl -y - -ADD ./runPostgreSQL.sh /runPostgreSQL.sh - -RUN chmod +x /runPostgreSQL.sh - -RUN apt-get install -y git-core - -# Install OpenJDK 15.0.1 -RUN wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz - -RUN mv openjdk-15.0.1_linux-x64_bin.tar.gz /usr/java - -RUN cd /usr/java && tar -xzvf openjdk-15.0.1_linux-x64_bin.tar.gz - -RUN echo 'JAVA_HOME=/usr/java/jdk-15.0.1' >> /etc/profile -RUN echo 'PATH=$PATH:$HOME/bin:$JAVA_HOME/bin' >> /etc/profile -RUN echo 'export JAVA_HOME' >> /etc/profile -RUN echo 'export JRE_HOME' >> /etc/profile -RUN echo 'export PATH' >> /etc/profile - -RUN update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-12.0.2/bin/java" 1 -RUN update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk-12.0.2/bin/javac" 1 \ No newline at end of file diff --git a/.circleci/Dockerfile-ubuntu22 b/.circleci/Dockerfile-ubuntu22 deleted file mode 100644 index 9fa1ebfd..00000000 --- a/.circleci/Dockerfile-ubuntu22 +++ /dev/null @@ -1,79 +0,0 @@ -FROM ubuntu:22.04 - -RUN apt-get update && apt-get upgrade -y - -RUN apt-get install build-essential -y - -RUN apt-get install -y git-core - -RUN apt-get install -y wget - -# Install OpenJDK 12 -RUN wget https://download.java.net/java/GA/jdk12.0.2/e482c34c86bd4bf8b56c0b35558996b9/10/GPL/openjdk-12.0.2_linux-x64_bin.tar.gz - -RUN mkdir /usr/java - -RUN mv openjdk-12.0.2_linux-x64_bin.tar.gz /usr/java - -RUN cd /usr/java && tar -xzvf openjdk-12.0.2_linux-x64_bin.tar.gz - -RUN echo 'JAVA_HOME=/usr/java/jdk-12.0.2' >> /etc/profile -RUN echo 'PATH=$PATH:$HOME/bin:$JAVA_HOME/bin' >> /etc/profile - -RUN apt-get install jq -y - -RUN apt-get install curl -y - -RUN apt-get install unzip -y - -ADD ./runPostgreSQL.sh /runPostgreSQL.sh - -RUN chmod +x /runPostgreSQL.sh - -# Install OpenJDK 15.0.1 -RUN wget https://download.java.net/java/GA/jdk15.0.1/51f4f36ad4ef43e39d0dfdbaf6549e32/9/GPL/openjdk-15.0.1_linux-x64_bin.tar.gz - -RUN mv openjdk-15.0.1_linux-x64_bin.tar.gz /usr/java - -RUN cd /usr/java && tar -xzvf openjdk-15.0.1_linux-x64_bin.tar.gz - -RUN echo 'JAVA_HOME=/usr/java/jdk-15.0.1' >> /etc/profile -RUN echo 'PATH=$PATH:$HOME/bin:$JAVA_HOME/bin' >> /etc/profile -RUN echo 'export JAVA_HOME' >> /etc/profile -RUN echo 'export JRE_HOME' >> /etc/profile -RUN echo 'export PATH' >> /etc/profile - -RUN update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-12.0.2/bin/java" 1 -RUN update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk-12.0.2/bin/javac" 1 - -#install postgres 13 -# Import Repository Signing Key -RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - -RUN DEBIAN_FRONTEND=noninteractive TZ=Etc/UTC apt-get -y install tzdata -RUN apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates sudo -y -# Add PostgreSQL repository -RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list -# Update again -RUN apt update -# Install PostgreSQL 13 -RUN apt install -y postgresql-13 -# Verify PostgreSQL 13 Installation on Ubuntu 22.04|20.04|18.04 -RUN psql --version - -USER postgres - -RUN service postgresql start && psql --command "CREATE USER root WITH SUPERUSER PASSWORD 'root';" \ - && createdb -O root root \ - && createdb -O root supertokens - -USER root - -RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/13/main/pg_hba.conf - - -RUN echo "listen_addresses='*'" >> /etc/postgresql/13/main/postgresql.conf - - -RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql - -VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"] diff --git a/.circleci/_config.yml b/.circleci/_config.yml deleted file mode 100644 index 2836ca9e..00000000 --- a/.circleci/_config.yml +++ /dev/null @@ -1,194 +0,0 @@ -version: 2.1 -orbs: - slack: circleci/slack@3.4.2 -jobs: - test: - docker: - - image: tamassupertokens/supertokens_postgresql_plugin_test - - image: rishabhpoddar/oauth-server-cicd - resource_class: large - steps: - - add_ssh_keys: - fingerprints: - - "14:68:18:82:73:00:e4:fc:9e:f3:6f:ce:1d:5c:6d:c4" - - checkout - - run: - name: update postgresql max_connections - command: | - sed -i 's/^#*\s*max_connections\s*=.*/max_connections = 10000/' /etc/postgresql/13/main/postgresql.conf - - run: - name: starting postgresql - command: | - (cd / && ./runPostgreSQL.sh) - - run: - name: create databases - command: | - psql -c "create database st0;" - psql -c "create database st1;" - psql -c "create database st2;" - psql -c "create database st3;" - psql -c "create database st4;" - psql -c "create database st5;" - psql -c "create database st6;" - psql -c "create database st7;" - psql -c "create database st8;" - psql -c "create database st9;" - psql -c "create database st10;" - psql -c "create database st11;" - psql -c "create database st12;" - psql -c "create database st13;" - psql -c "create database st14;" - psql -c "create database st15;" - psql -c "create database st16;" - psql -c "create database st17;" - psql -c "create database st18;" - psql -c "create database st19;" - psql -c "create database st20;" - psql -c "create database st21;" - psql -c "create database st22;" - psql -c "create database st23;" - psql -c "create database st24;" - psql -c "create database st25;" - psql -c "create database st26;" - psql -c "create database st27;" - psql -c "create database st28;" - psql -c "create database st29;" - psql -c "create database st30;" - psql -c "create database st31;" - psql -c "create database st32;" - psql -c "create database st33;" - psql -c "create database st34;" - psql -c "create database st35;" - psql -c "create database st36;" - psql -c "create database st37;" - psql -c "create database st38;" - psql -c "create database st39;" - psql -c "create database st40;" - psql -c "create database st41;" - psql -c "create database st42;" - psql -c "create database st43;" - psql -c "create database st44;" - psql -c "create database st45;" - psql -c "create database st46;" - psql -c "create database st47;" - psql -c "create database st48;" - psql -c "create database st49;" - psql -c "create database st50;" - - run: - name: running tests - command: (cd .circleci/ && ./doTests.sh) - - slack/status - test-onemillionusers: - docker: - - image: tamassupertokens/supertokens_postgresql_plugin_test - resource_class: large - steps: - - add_ssh_keys: - fingerprints: - - "14:68:18:82:73:00:e4:fc:9e:f3:6f:ce:1d:5c:6d:c4" - - checkout - - run: - name: update postgresql max_connections - command: | - sed -i 's/^#*\s*max_connections\s*=.*/max_connections = 10000/' /etc/postgresql/13/main/postgresql.conf - - run: - name: starting postgresql - command: | - (cd / && ./runPostgreSQL.sh) - - run: - name: create databases - command: | - psql -c "create database st0;" - psql -c "create database st1;" - psql -c "create database st2;" - psql -c "create database st3;" - psql -c "create database st4;" - psql -c "create database st5;" - psql -c "create database st6;" - psql -c "create database st7;" - psql -c "create database st8;" - psql -c "create database st9;" - psql -c "create database st10;" - psql -c "create database st11;" - psql -c "create database st12;" - psql -c "create database st13;" - psql -c "create database st14;" - psql -c "create database st15;" - psql -c "create database st16;" - psql -c "create database st17;" - psql -c "create database st18;" - psql -c "create database st19;" - psql -c "create database st20;" - psql -c "create database st21;" - psql -c "create database st22;" - psql -c "create database st23;" - psql -c "create database st24;" - psql -c "create database st25;" - psql -c "create database st26;" - psql -c "create database st27;" - psql -c "create database st28;" - psql -c "create database st29;" - psql -c "create database st30;" - psql -c "create database st31;" - psql -c "create database st32;" - psql -c "create database st33;" - psql -c "create database st34;" - psql -c "create database st35;" - psql -c "create database st36;" - psql -c "create database st37;" - psql -c "create database st38;" - psql -c "create database st39;" - psql -c "create database st40;" - psql -c "create database st41;" - psql -c "create database st42;" - psql -c "create database st43;" - psql -c "create database st44;" - psql -c "create database st45;" - psql -c "create database st46;" - psql -c "create database st47;" - psql -c "create database st48;" - psql -c "create database st49;" - psql -c "create database st50;" - - run: - name: running tests - command: (cd .circleci/ && ./doOneMillionUsersTests.sh) - - slack/status - mark-passed: - docker: - - image: tamassupertokens/supertokens_postgresql_plugin_test - steps: - - checkout - - run: (cd .circleci && ./markPassed.sh) - - slack/status - -workflows: - version: 2 - tagged-build: - jobs: - - test: - context: - - slack-notification - filters: - tags: - only: /dev-v[0-9]+(\.[0-9]+)*/ - branches: - only: /test-cicd\/.*/ - - test-onemillionusers: - context: - - slack-notification - filters: - tags: - only: /dev-v[0-9]+(\.[0-9]+)*/ - branches: - only: /test-cicd\/.*/ - - mark-passed: - context: - - slack-notification - filters: - tags: - only: /dev-v[0-9]+(\.[0-9]+)*/ - branches: - ignore: /.*/ - requires: - - test - - test-onemillionusers diff --git a/.circleci/doOneMillionUsersTests.sh b/.circleci/doOneMillionUsersTests.sh deleted file mode 100755 index 2b4ca15d..00000000 --- a/.circleci/doOneMillionUsersTests.sh +++ /dev/null @@ -1,136 +0,0 @@ -function cleanup { - if test -f "pluginInterfaceExactVersionsOutput"; then - rm pluginInterfaceExactVersionsOutput - fi -} - -trap cleanup EXIT -cleanup - -pluginInterfaceJson=`cat ../pluginInterfaceSupported.json` -pluginInterfaceLength=`echo $pluginInterfaceJson | jq ".versions | length"` -pluginInterfaceArray=`echo $pluginInterfaceJson | jq ".versions"` -echo "got plugin interface relations" - -./getPluginInterfaceExactVersions.sh $pluginInterfaceLength "$pluginInterfaceArray" - -if [[ $? -ne 0 ]] -then - echo "all plugin interfaces found... failed. exiting!" - exit 1 -else - echo "all plugin interfaces found..." -fi - -# get plugin version -pluginVersion=`cat ../build.gradle | grep -e "version =" -e "version="` -while IFS='"' read -ra ADDR; do - counter=0 - for i in "${ADDR[@]}"; do - if [ $counter == 1 ] - then - pluginVersion=$i - fi - counter=$(($counter+1)) - done -done <<< "$pluginVersion" - -responseStatus=`curl -s -o /dev/null -w "%{http_code}" -X PUT \ - https://api.supertokens.io/0/plugin \ - -H 'Content-Type: application/json' \ - -H 'api-version: 0' \ - -d "{ - \"password\": \"$SUPERTOKENS_API_KEY\", - \"planType\":\"FREE\", - \"version\":\"$pluginVersion\", - \"pluginInterfaces\": $pluginInterfaceArray, - \"name\": \"postgresql\" -}"` -if [ $responseStatus -ne "200" ] -then - echo "failed plugin PUT API status code: $responseStatus. Exiting!" - exit 1 -fi - -someTestsRan=false -while read -u 10 line -do - if [[ $line = "" ]]; then - continue - fi - i=0 - currTag=`echo $line | jq .tag` - currTag=`echo $currTag | tr -d '"'` - - currVersion=`echo $line | jq .version` - currVersion=`echo $currVersion | tr -d '"'` - piX=$(cut -d'.' -f1 <<<"$currVersion") - piY=$(cut -d'.' -f2 <<<"$currVersion") - piVersion="$piX.$piY" - - someTestsRan=true - - response=`curl -s -X GET \ - "https://api.supertokens.io/0/plugin-interface/dependency/core/latest?password=$SUPERTOKENS_API_KEY&planType=FREE&mode=DEV&version=$piVersion" \ - -H 'api-version: 0'` - if [[ `echo $response | jq .core` == "null" ]] - then - echo "fetching latest X.Y version for core given plugin-interface X.Y version: $piVersion gave response: $response" - exit 1 - fi - coreVersionX2=$(echo $response | jq .core | tr -d '"') - - response=`curl -s -X GET \ - "https://api.supertokens.io/0/core/latest?password=$SUPERTOKENS_API_KEY&planType=FREE&mode=DEV&version=$coreVersionX2" \ - -H 'api-version: 0'` - if [[ `echo $response | jq .tag` == "null" ]] - then - echo "fetching latest X.Y.Z version for core X.Y version: $coreVersionX2 gave response: $response" - exit 1 - fi - coreVersionTag=$(echo $response | jq .tag | tr -d '"') - - cd ../../ - git clone git@github.com:supertokens/supertokens-root.git - cd supertokens-root - rm gradle.properties - - update-alternatives --install "/usr/bin/java" "java" "/usr/java/jdk-15.0.1/bin/java" 2 - update-alternatives --install "/usr/bin/javac" "javac" "/usr/java/jdk-15.0.1/bin/javac" 2 - - pluginX=$(cut -d'.' -f1 <<<"$pluginVersion") - pluginY=$(cut -d'.' -f2 <<<"$pluginVersion") - echo -e "core,$coreVersionX2\nplugin-interface,$piVersion\npostgresql-plugin,$pluginX.$pluginY" > modules.txt - ./loadModules - cd supertokens-core - git checkout $coreVersionTag - cd ../supertokens-plugin-interface - git checkout $currTag - cd ../supertokens-postgresql-plugin - git checkout dev-v$pluginVersion - cd ../ - echo $SUPERTOKENS_API_KEY > apiPassword - export ONE_MILLION_USERS_TEST=1 - ./utils/setupTestEnv --cicd - ./gradlew :supertokens-postgresql-plugin:test --tests io.supertokens.storage.postgresql.test.OneMillionUsersTest - - if [[ $? -ne 0 ]] - then - cat logs/* - cd ../project/ - echo "test failed... exiting!" - exit 1 - fi - cd ../ - rm -rf supertokens-root - cd project/.circleci -done 10 modules.txt - ./loadModules - - #gradle properties overrides - export _JAVA_OPTIONS="-Xms1g -Xmx4g" - - cd supertokens-core - git checkout $coreVersionTag - cd ../supertokens-plugin-interface - git checkout $currTag - cd ../supertokens-postgresql-plugin - git checkout dev-v$pluginVersion - cd ../ - echo $SUPERTOKENS_API_KEY > apiPassword - ./startTestingEnv --cicd - - if [[ $? -ne 0 ]] - then - cat logs/* - cd ../project/ - echo "test failed... exiting!" - exit 1 - fi - cd ../ - rm -rf supertokens-root - cd project/.circleci -done 10 -touch pluginInterfaceExactVersionsOutput -i=0 -while [ $i -lt $1 ]; do - currVersion=`echo $2 | jq ".[$i]"` - currVersion=`echo $currVersion | tr -d '"'` - i=$((i+1)) - - # now we have the current version like 0.0. - # We now have to find something that matches dev-v0.0.* or v0.0.* - response=`curl -s -X GET \ - "https://api.supertokens.io/0/plugin-interface/latest?password=$SUPERTOKENS_API_KEY&planType=FREE&mode=DEV&version=$currVersion" \ - -H 'api-version: 0'` - if [[ `echo $response | jq .tag` == "null" ]] - then - echo $response - exit 1 - fi - echo $response >> pluginInterfaceExactVersionsOutput -done \ No newline at end of file diff --git a/.circleci/markPassed.sh b/.circleci/markPassed.sh deleted file mode 100755 index 718d5f54..00000000 --- a/.circleci/markPassed.sh +++ /dev/null @@ -1,29 +0,0 @@ -pluginVersion=`cat ../build.gradle | grep -e "version =" -e "version="` -while IFS='"' read -ra ADDR; do - counter=0 - for i in "${ADDR[@]}"; do - if [ $counter == 1 ] - then - pluginVersion=$i - fi - counter=$(($counter+1)) - done -done <<< "$pluginVersion" - -echo "calling /core PATCH to make testing passed" -responseStatus=`curl -s -o /dev/null -w "%{http_code}" -X PATCH \ - https://api.supertokens.io/0/plugin \ - -H 'Content-Type: application/json' \ - -H 'api-version: 0' \ - -d "{ - \"password\": \"$SUPERTOKENS_API_KEY\", - \"planType\":\"FREE\", - \"name\":\"postgresql\", - \"version\":\"$pluginVersion\", - \"testPassed\": true - }"` -if [ $responseStatus -ne "200" ] -then - echo "patch api failed" - exit 1 -fi diff --git a/.circleci/runPostgreSQL.sh b/.circleci/runPostgreSQL.sh deleted file mode 100644 index 73da0f5f..00000000 --- a/.circleci/runPostgreSQL.sh +++ /dev/null @@ -1 +0,0 @@ - service postgresql start diff --git a/.github/helpers/docker/Dockerfile b/.github/helpers/docker/Dockerfile index 1aefd471..b7f4be3e 100644 --- a/.github/helpers/docker/Dockerfile +++ b/.github/helpers/docker/Dockerfile @@ -14,6 +14,7 @@ RUN unzip jre.zip RUN mv jre-21.0.7 jre || mv jre-21.0.7-linux-aarch/jre-21.0.7 jre ADD ./cli ./cli ADD ./core ./core +ADD ./agent ./agent ADD ./plugin-interface ./plugin-interface ADD ./plugin ./plugin ADD ./ee ./ee diff --git a/CHANGELOG.md b/CHANGELOG.md index c317f800..b4bfd17c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [9.1.1] + +- Adds docker support for opentelemetry javaagent + ## [9.1.0] - Sends hikari logs to opentelemetry diff --git a/build.gradle b/build.gradle index e4f63f45..3f02786b 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ plugins { id 'java-library' } -version = "9.1.0" +version = "9.1.1" repositories { mavenCentral() diff --git a/src/main/java/io/supertokens/storage/postgresql/Start.java b/src/main/java/io/supertokens/storage/postgresql/Start.java index 5be0b8ad..228a5625 100644 --- a/src/main/java/io/supertokens/storage/postgresql/Start.java +++ b/src/main/java/io/supertokens/storage/postgresql/Start.java @@ -69,6 +69,7 @@ import io.supertokens.pluginInterface.oauth.exception.DuplicateOAuthLogoutChallengeException; import io.supertokens.pluginInterface.oauth.exception.OAuthClientNotFoundException; import io.supertokens.pluginInterface.opentelemetry.OtelProvider; +import io.supertokens.pluginInterface.opentelemetry.WithinOtelSpan; import io.supertokens.pluginInterface.passwordless.PasswordlessCode; import io.supertokens.pluginInterface.passwordless.PasswordlessDevice; import io.supertokens.pluginInterface.passwordless.PasswordlessImportUser; @@ -127,6 +128,7 @@ import static io.supertokens.storage.postgresql.QueryExecutorTemplate.execute; +@WithinOtelSpan public class Start implements SessionSQLStorage, EmailPasswordSQLStorage, EmailVerificationSQLStorage, ThirdPartySQLStorage, JWTRecipeSQLStorage, PasswordlessSQLStorage, UserMetadataSQLStorage, UserRolesSQLStorage, UserIdMappingStorage, diff --git a/src/main/java/io/supertokens/storage/postgresql/queries/GeneralQueries.java b/src/main/java/io/supertokens/storage/postgresql/queries/GeneralQueries.java index 4de9f02e..4c14fc6e 100644 --- a/src/main/java/io/supertokens/storage/postgresql/queries/GeneralQueries.java +++ b/src/main/java/io/supertokens/storage/postgresql/queries/GeneralQueries.java @@ -26,6 +26,7 @@ import io.supertokens.pluginInterface.exceptions.StorageTransactionLogicException; import io.supertokens.pluginInterface.multitenancy.AppIdentifier; import io.supertokens.pluginInterface.multitenancy.TenantIdentifier; +import io.supertokens.pluginInterface.opentelemetry.WithinOtelSpan; import io.supertokens.storage.postgresql.ConnectionPool; import io.supertokens.storage.postgresql.PreparedStatementValueSetter; import io.supertokens.storage.postgresql.Start; @@ -796,6 +797,7 @@ public static void setKeyValue(Start start, TenantIdentifier tenantIdentifier, S } } + @WithinOtelSpan public static KeyValueInfo getKeyValue(Start start, TenantIdentifier tenantIdentifier, String key) throws SQLException, StorageQueryException { String QUERY = "SELECT value, created_at_time FROM " + getConfig(start).getKeyValueTable() diff --git a/startDb.sh b/startDb.sh index 60940ece..41f38f11 100755 --- a/startDb.sh +++ b/startDb.sh @@ -2,7 +2,7 @@ docker run --rm --name postgres \ -e 'POSTGRES_USER=root' \ -e 'POSTGRES_PASSWORD=root' \ -d -p 5432:5432 \ - -v ~/Desktop/db/pstgres:/var/lib/postgresql/data \ + -v ~/Desktop/db/pstgres:/var/lib/postgresql/18/docker \ postgres \ -c 'max_connections=1000' \ -c 'autovacuum_naptime=1' \