From d8ea26feb7693f61589ed0389559db82275848d1 Mon Sep 17 00:00:00 2001 From: Akhil Mohan Date: Fri, 9 Feb 2024 13:12:25 +0530 Subject: [PATCH 1/3] feat: changed docker compose to use init container pattern for migration --- .env.example | 12 +-- docker-compose.dev.yml | 177 ++++++++++++++++++++++------------------- docker-compose.pg.yml | 20 ++++- docker-compose.yml | 32 +++++--- 4 files changed, 141 insertions(+), 100 deletions(-) diff --git a/.env.example b/.env.example index 6b8639a74..4029cb141 100644 --- a/.env.example +++ b/.env.example @@ -3,16 +3,18 @@ # THIS IS A SAMPLE ENCRYPTION KEY AND SHOULD NEVER BE USED FOR PRODUCTION ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218 +# Required +DB_CONNECTION_URI=postgres://infisical:infisical@db:5432/infisical + # JWT # Required secrets to sign JWT tokens # THIS IS A SAMPLE AUTH_SECRET KEY AND SHOULD NEVER BE USED FOR PRODUCTION AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE= -# MongoDB -# Backend will connect to the MongoDB instance at connection string MONGO_URL which can either be a ref -# to the MongoDB container instance or Mongo Cloud -# Required -MONGO_URL=mongodb://root:example@mongo:27017/?authSource=admin +# Postgres creds +POSTGRES_PASSWORD=infisical +POSTGRES_USER=infisical +POSTGRES_DB=infisical # Redis REDIS_URL=redis://redis:6379 diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 774cd5b02..a73f7ca5e 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,4 +1,4 @@ -version: '3' +version: "3.9" services: nginx: @@ -10,36 +10,68 @@ services: volumes: - ./nginx/default.dev.conf:/etc/nginx/conf.d/default.conf:ro depends_on: - - frontend - backend - networks: - - infisical-dev + - frontend + + db: + image: postgres:14-alpine + ports: + - "5432:5432" + volumes: + - postgres-data:/var/lib/postgresql/data + environment: + POSTGRES_PASSWORD: infisical + POSTGRES_USER: infisical + POSTGRES_DB: infisical + + redis: + image: redis + container_name: infisical-dev-redis + environment: + - ALLOW_EMPTY_PASSWORD=yes + ports: + - 6379:6379 + volumes: + - redis_data:/data + + redis-commander: + container_name: infisical-dev-redis-commander + image: rediscommander/redis-commander + restart: always + depends_on: + - redis + environment: + - REDIS_HOSTS=local:redis:6379 + ports: + - "8085:8081" + + db-test: + profiles: ["test"] + image: postgres:14-alpine + ports: + - "5430:5432" + environment: + POSTGRES_PASSWORD: infisical + POSTGRES_USER: infisical + POSTGRES_DB: infisical-test backend: - container_name: infisical-dev-backend - restart: unless-stopped - depends_on: - - mongo - - smtp-server - - redis + container_name: infisical-dev-api build: context: ./backend - dockerfile: Dockerfile - volumes: - - ./backend/src:/app/src - - ./backend/nodemon.json:/app/nodemon.json - - /app/node_modules - - ./backend/api-documentation.json:/app/api-documentation.json - - ./backend/swagger.ts:/app/swagger.ts - command: npm run dev - env_file: .env + dockerfile: Dockerfile.dev + depends_on: + - db + - redis + env_file: + - .env + ports: + - 4000:4000 environment: - NODE_ENV=development - - MONGO_URL=mongodb://root:example@mongo:27017/?authSource=admin - networks: - - infisical-dev - extra_hosts: - - "host.docker.internal:host-gateway" + - DB_CONNECTION_URI=postgres://infisical:infisical@db/infisical?sslmode=disable + volumes: + - ./backend/src:/app/src frontend: container_name: infisical-dev-frontend @@ -55,81 +87,60 @@ services: env_file: .env environment: - NEXT_PUBLIC_ENV=development - - INFISICAL_TELEMETRY_ENABLED=${TELEMETRY_ENABLED} - networks: - - infisical-dev + - INFISICAL_TELEMETRY_ENABLED=false - mongo: - image: mongo - container_name: infisical-dev-mongo + pgadmin: + image: dpage/pgadmin4 restart: always - env_file: .env environment: - - MONGO_INITDB_ROOT_USERNAME=root - - MONGO_INITDB_ROOT_PASSWORD=example - volumes: - - mongo-data:/data/db - networks: - - infisical-dev - - mongo-express: - container_name: infisical-dev-mongo-express - image: mongo-express - restart: always - depends_on: - - mongo - env_file: .env - environment: - - ME_CONFIG_MONGODB_ADMINUSERNAME=root - - ME_CONFIG_MONGODB_ADMINPASSWORD=example - - ME_CONFIG_MONGODB_URL=mongodb://root:example@mongo:27017/ + PGADMIN_DEFAULT_EMAIL: admin@example.com + PGADMIN_DEFAULT_PASSWORD: pass ports: - - 8081:8081 - networks: - - infisical-dev + - 5050:80 + depends_on: + - db smtp-server: container_name: infisical-dev-smtp-server image: lytrax/mailhog:latest # https://github.com/mailhog/MailHog/issues/353#issuecomment-821137362 restart: always logging: - driver: 'none' # disable saving logs + driver: "none" # disable saving logs ports: - 1025:1025 # SMTP server - 8025:8025 # Web UI - networks: - - infisical-dev - redis: - image: redis - container_name: infisical-dev-redis - environment: - - ALLOW_EMPTY_PASSWORD=yes - ports: - - 6379:6379 - volumes: - - redis_data:/data - networks: - - infisical-dev - - redis-commander: - container_name: infisical-dev-redis-commander - image: rediscommander/redis-commander - restart: always - depends_on: - - redis - environment: - - REDIS_HOSTS=local:redis:6379 - ports: - - "8085:8081" - networks: - - infisical-dev + # mongo: + # image: mongo + # container_name: infisical-dev-mongo + # restart: always + # env_file: .env + # environment: + # - MONGO_INITDB_ROOT_USERNAME=root + # - MONGO_INITDB_ROOT_PASSWORD=example + # volumes: + # - mongo-data:/data/db + # ports: + # - 27017:27017 + # + # mongo-express: + # container_name: infisical-dev-mongo-express + # image: mongo-express + # restart: always + # depends_on: + # - mongo + # env_file: .env + # environment: + # - ME_CONFIG_MONGODB_ADMINUSERNAME=root + # - ME_CONFIG_MONGODB_ADMINPASSWORD=example + # - ME_CONFIG_MONGODB_URL=mongodb://root:example@mongo:27017/ + # ports: + # - 8081:8081 volumes: - mongo-data: + postgres-data: driver: local redis_data: driver: local - -networks: - infisical-dev: + mongo-data: + driver: local diff --git a/docker-compose.pg.yml b/docker-compose.pg.yml index a73f7ca5e..677904d0a 100644 --- a/docker-compose.pg.yml +++ b/docker-compose.pg.yml @@ -55,14 +55,30 @@ services: POSTGRES_USER: infisical POSTGRES_DB: infisical-test + db-migration: + container_name: infisical-db-migration + depends_on: + - db + build: + context: ./backend + dockerfile: Dockerfile.dev + env_file: .env + environment: + - DB_CONNECTION_URI=postgres://infisical:infisical@db/infisical?sslmode=disable + command: npm run migration:latest + backend: container_name: infisical-dev-api build: context: ./backend dockerfile: Dockerfile.dev depends_on: - - db - - redis + db: + condition: service_started + redis: + condition: service_started + db-migration: + condition: service_completed_successfully env_file: - .env ports: diff --git a/docker-compose.yml b/docker-compose.yml index c159a2175..5861a4a0e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,27 @@ version: "3" services: + db-migration: + container_name: infisical-db-migration + depends_on: + - db + image: infisical/infisical:latest-postgres + env_file: .env + command: npm run migration:latest + networks: + - infisical + backend: container_name: infisical-backend restart: unless-stopped depends_on: - - mongo - image: infisical/infisical:latest + db: + condition: service_started + redis: + condition: service_started + db-migration: + condition: service_completed_successfully + image: infisical/infisical:latest-postgres env_file: .env ports: - 80:8080 @@ -28,21 +43,18 @@ services: volumes: - redis_data:/data - mongo: - container_name: infisical-mongo - image: mongo + db: + container_name: infisical-db + image: postgres:14-alpine restart: always env_file: .env - environment: - - MONGO_INITDB_ROOT_USERNAME=${MONGO_USERNAME} - - MONGO_INITDB_ROOT_PASSWORD=${MONGO_PASSWORD} volumes: - - mongo-data:/data/db + - pg_data:/data/db networks: - infisical volumes: - mongo-data: + pg_data: driver: local redis_data: driver: local From db205b855a5e5acc88ace6ec2a2bf23bf42e928f Mon Sep 17 00:00:00 2001 From: Akhil Mohan Date: Mon, 12 Feb 2024 14:52:19 +0530 Subject: [PATCH 2/3] feat: removed mongo comments from compose file --- docker-compose.dev.yml | 29 ----------------------------- docker-compose.pg.yml | 29 ----------------------------- 2 files changed, 58 deletions(-) diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index a73f7ca5e..b5c1f70f8 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -110,37 +110,8 @@ services: - 1025:1025 # SMTP server - 8025:8025 # Web UI - # mongo: - # image: mongo - # container_name: infisical-dev-mongo - # restart: always - # env_file: .env - # environment: - # - MONGO_INITDB_ROOT_USERNAME=root - # - MONGO_INITDB_ROOT_PASSWORD=example - # volumes: - # - mongo-data:/data/db - # ports: - # - 27017:27017 - # - # mongo-express: - # container_name: infisical-dev-mongo-express - # image: mongo-express - # restart: always - # depends_on: - # - mongo - # env_file: .env - # environment: - # - ME_CONFIG_MONGODB_ADMINUSERNAME=root - # - ME_CONFIG_MONGODB_ADMINPASSWORD=example - # - ME_CONFIG_MONGODB_URL=mongodb://root:example@mongo:27017/ - # ports: - # - 8081:8081 - volumes: postgres-data: driver: local redis_data: driver: local - mongo-data: - driver: local diff --git a/docker-compose.pg.yml b/docker-compose.pg.yml index 677904d0a..f95810777 100644 --- a/docker-compose.pg.yml +++ b/docker-compose.pg.yml @@ -126,37 +126,8 @@ services: - 1025:1025 # SMTP server - 8025:8025 # Web UI - # mongo: - # image: mongo - # container_name: infisical-dev-mongo - # restart: always - # env_file: .env - # environment: - # - MONGO_INITDB_ROOT_USERNAME=root - # - MONGO_INITDB_ROOT_PASSWORD=example - # volumes: - # - mongo-data:/data/db - # ports: - # - 27017:27017 - # - # mongo-express: - # container_name: infisical-dev-mongo-express - # image: mongo-express - # restart: always - # depends_on: - # - mongo - # env_file: .env - # environment: - # - ME_CONFIG_MONGODB_ADMINUSERNAME=root - # - ME_CONFIG_MONGODB_ADMINPASSWORD=example - # - ME_CONFIG_MONGODB_URL=mongodb://root:example@mongo:27017/ - # ports: - # - 8081:8081 - volumes: postgres-data: driver: local redis_data: driver: local - mongo-data: - driver: local From f320b08ca87766f8e8c1eb70f1840dfe1803f9c7 Mon Sep 17 00:00:00 2001 From: Maidul Islam Date: Tue, 13 Feb 2024 19:44:42 -0500 Subject: [PATCH 3/3] rename docker compose and bring back make up-dev --- Makefile | 10 +- docker-compose.dev.yml | 20 ++- docker-compose.pg.yml | 133 ------------------ docker-compose.yml => docker-compose.prod.yml | 0 4 files changed, 20 insertions(+), 143 deletions(-) delete mode 100644 docker-compose.pg.yml rename docker-compose.yml => docker-compose.prod.yml (100%) diff --git a/Makefile b/Makefile index 544a0256d..2b7f43c85 100644 --- a/Makefile +++ b/Makefile @@ -5,16 +5,10 @@ push: docker-compose -f docker-compose.yml push up-dev: - docker-compose -f docker-compose.dev.yml up --build - -up-pg-dev: - docker compose -f docker-compose.pg.yml up --build - -i-dev: - infisical run -- docker-compose -f docker-compose.dev.yml up --build + docker compose -f docker-compose.dev.yml up --build up-prod: - docker-compose -f docker-compose.yml up --build + docker-compose -f docker-compose.prod.yml up --build down: docker-compose down diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index b5c1f70f8..f95810777 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -55,14 +55,30 @@ services: POSTGRES_USER: infisical POSTGRES_DB: infisical-test + db-migration: + container_name: infisical-db-migration + depends_on: + - db + build: + context: ./backend + dockerfile: Dockerfile.dev + env_file: .env + environment: + - DB_CONNECTION_URI=postgres://infisical:infisical@db/infisical?sslmode=disable + command: npm run migration:latest + backend: container_name: infisical-dev-api build: context: ./backend dockerfile: Dockerfile.dev depends_on: - - db - - redis + db: + condition: service_started + redis: + condition: service_started + db-migration: + condition: service_completed_successfully env_file: - .env ports: diff --git a/docker-compose.pg.yml b/docker-compose.pg.yml deleted file mode 100644 index f95810777..000000000 --- a/docker-compose.pg.yml +++ /dev/null @@ -1,133 +0,0 @@ -version: "3.9" - -services: - nginx: - container_name: infisical-dev-nginx - image: nginx - restart: always - ports: - - 8080:80 - volumes: - - ./nginx/default.dev.conf:/etc/nginx/conf.d/default.conf:ro - depends_on: - - backend - - frontend - - db: - image: postgres:14-alpine - ports: - - "5432:5432" - volumes: - - postgres-data:/var/lib/postgresql/data - environment: - POSTGRES_PASSWORD: infisical - POSTGRES_USER: infisical - POSTGRES_DB: infisical - - redis: - image: redis - container_name: infisical-dev-redis - environment: - - ALLOW_EMPTY_PASSWORD=yes - ports: - - 6379:6379 - volumes: - - redis_data:/data - - redis-commander: - container_name: infisical-dev-redis-commander - image: rediscommander/redis-commander - restart: always - depends_on: - - redis - environment: - - REDIS_HOSTS=local:redis:6379 - ports: - - "8085:8081" - - db-test: - profiles: ["test"] - image: postgres:14-alpine - ports: - - "5430:5432" - environment: - POSTGRES_PASSWORD: infisical - POSTGRES_USER: infisical - POSTGRES_DB: infisical-test - - db-migration: - container_name: infisical-db-migration - depends_on: - - db - build: - context: ./backend - dockerfile: Dockerfile.dev - env_file: .env - environment: - - DB_CONNECTION_URI=postgres://infisical:infisical@db/infisical?sslmode=disable - command: npm run migration:latest - - backend: - container_name: infisical-dev-api - build: - context: ./backend - dockerfile: Dockerfile.dev - depends_on: - db: - condition: service_started - redis: - condition: service_started - db-migration: - condition: service_completed_successfully - env_file: - - .env - ports: - - 4000:4000 - environment: - - NODE_ENV=development - - DB_CONNECTION_URI=postgres://infisical:infisical@db/infisical?sslmode=disable - volumes: - - ./backend/src:/app/src - - frontend: - container_name: infisical-dev-frontend - restart: unless-stopped - depends_on: - - backend - build: - context: ./frontend - dockerfile: Dockerfile.dev - volumes: - - ./frontend/src:/app/src/ # mounted whole src to avoid missing reload on new files - - ./frontend/public:/app/public - env_file: .env - environment: - - NEXT_PUBLIC_ENV=development - - INFISICAL_TELEMETRY_ENABLED=false - - pgadmin: - image: dpage/pgadmin4 - restart: always - environment: - PGADMIN_DEFAULT_EMAIL: admin@example.com - PGADMIN_DEFAULT_PASSWORD: pass - ports: - - 5050:80 - depends_on: - - db - - smtp-server: - container_name: infisical-dev-smtp-server - image: lytrax/mailhog:latest # https://github.com/mailhog/MailHog/issues/353#issuecomment-821137362 - restart: always - logging: - driver: "none" # disable saving logs - ports: - - 1025:1025 # SMTP server - - 8025:8025 # Web UI - -volumes: - postgres-data: - driver: local - redis_data: - driver: local diff --git a/docker-compose.yml b/docker-compose.prod.yml similarity index 100% rename from docker-compose.yml rename to docker-compose.prod.yml