Skip to content

Commit 284886f

Browse files
authored
chore: replace minio with rustfs (#2752)
1 parent 48742bd commit 284886f

File tree

3 files changed

+62
-24
lines changed

3 files changed

+62
-24
lines changed

controlplane/.env.example

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ WEBHOOK_URL=
3232
WEBHOOK_SECRET=
3333

3434
# S3
35-
S3_STORAGE_URL="http://minio:changeme@localhost:10000/cosmo"
35+
S3_STORAGE_URL="http://localhost:10000/cosmo"
3636
S3_REGION="auto"
3737
S3_ENDPOINT=""
38-
S3_ACCESS_KEY_ID=
39-
S3_SECRET_ACCESS_KEY=
38+
S3_ACCESS_KEY_ID="admin"
39+
S3_SECRET_ACCESS_KEY="changeme"
4040
S3_FORCE_PATH_STYLE="true"
4141

4242
# Optional for Stripe Integration

docker-compose.full.yml

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -173,22 +173,41 @@ services:
173173
depends_on:
174174
- postgres
175175

176-
minio:
177-
image: bitnamilegacy/minio:${DC_MINIO_VERSION:-2024.7.16-debian-12-r0}
176+
# Due to previous use of minio and to ensure that data is correctly migrated, we need to
177+
# ensure that rustfs is able to access it. Rustfs runs under a different user than minio, so this
178+
# is a one-off run to fix permissions on the volume.
179+
rustfs_perms:
180+
image: alpine
181+
user: root
182+
volumes:
183+
- minio:/data
184+
command: chown -R 10001:10001 /data
185+
186+
rustfs:
187+
image: rustfs/rustfs:1.0.0-alpha.92
188+
depends_on:
189+
rustfs_perms:
190+
condition: service_completed_successfully
191+
command: "rustfs server /data"
178192
environment:
179-
- MINIO_ROOT_USER=${MINIO_ROOT_USER:-minio}
180-
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-changeme}
181-
- MINIO_DEFAULT_BUCKETS=cosmo
193+
RUSTFS_CONSOLE_ENABLE: 'true'
194+
RUSTFS_ACCESS_KEY: ${S3_ACCESS_KEY_ID:-admin}
195+
RUSTFS_SECRET_KEY: ${S3_SECRET_ACCESS_KEY:-changeme}
182196
ports:
183197
- '10000:9000'
184198
- '10001:9001'
185199
volumes:
186-
- minio:/bitnami/minio/data
200+
# We've previously used minio for S3 provider. Since rustfs is storage-compatible
201+
# with minio, we want to reuse the existing minio volume so that existing data is kept.
202+
- minio:/data
187203
restart: unless-stopped
188204
networks:
189205
- primary
190206
profiles:
191207
- default
208+
post_start:
209+
- command: sh -c "sleep 10 && apk add minio-client && mcli alias set rustfs http://localhost:9000 ${S3_ACCESS_KEY_ID:-admin} ${S3_SECRET_ACCESS_KEY:-changeme} && mcli mb -p rustfs/cosmo"
210+
user: root
192211

193212
nats:
194213
image: nats:${DC_NATS_VERSION:-2.10.6}
@@ -235,10 +254,10 @@ services:
235254
NODE_ENV: development
236255
AUTH_JWT_SECRET: fkczyomvdprgvtmvkuhvprxuggkbgwld
237256
AUTH_ADMISSION_JWT_SECRET: uXDxJLEvrw4aafPfrf3rRotCoBzRfPEW
238-
S3_STORAGE_URL: ${S3_STORAGE_URL:-http://${MINIO_ROOT_USER:-minio}:${MINIO_ROOT_PASSWORD:-changeme}@minio:9000/cosmo}
257+
S3_STORAGE_URL: ${S3_STORAGE_URL:-http://rustfs:9000/cosmo}
239258
S3_REGION: ${S3_REGION_CDN:-${S3_REGION:-auto}}
240-
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
241-
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
259+
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-admin}
260+
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-changeme}
242261
S3_FORCE_PATH_STYLE: ${S3_FORCE_PATH_STYLE:-true}
243262
ports:
244263
- '11000:11000'
@@ -301,10 +320,10 @@ services:
301320
KC_API_URL: 'http://keycloak:8080'
302321
KC_FRONTEND_URL: 'http://localhost:8080'
303322
PROMETHEUS_API_URL: 'http://admin:test@prometheus:9090/api/v1'
304-
S3_STORAGE_URL: ${S3_STORAGE_URL:-http://${MINIO_ROOT_USER:-minio}:${MINIO_ROOT_PASSWORD:-changeme}@minio:9000/cosmo}
323+
S3_STORAGE_URL: ${S3_STORAGE_URL:-http://rustfs:9000/cosmo}
305324
S3_REGION: ${S3_REGION_CONTROLPLANE:-${S3_REGION:-auto}}
306-
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
307-
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
325+
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-admin}
326+
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-changeme}
308327
S3_FORCE_PATH_STYLE: ${S3_FORCE_PATH_STYLE:-true}
309328
CDN_BASE_URL: 'http://cdn:11000'
310329
REDIS_HOST: redis

docker-compose.yml

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -176,21 +176,40 @@ services:
176176
profiles:
177177
- dev
178178

179-
minio:
180-
image: bitnamilegacy/minio:${DC_MINIO_VERSION:-2024.7.16-debian-12-r0}
179+
# Due to previous use of minio and to ensure that data is correctly migrated, we need to
180+
# ensure that rustfs is able to access it. Rustfs runs under a different user than minio, so this
181+
# is a one-off run to fix permissions on the volume.
182+
rustfs_perms:
183+
image: alpine
184+
user: root
185+
volumes:
186+
- minio:/data
187+
command: chown -R 10001:10001 /data
188+
189+
rustfs:
190+
image: rustfs/rustfs:1.0.0-alpha.92
191+
depends_on:
192+
rustfs_perms:
193+
condition: service_completed_successfully
194+
command: "rustfs server /data"
181195
environment:
182-
- MINIO_ROOT_USER=${MINIO_ROOT_USER:-minio}
183-
- MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD:-changeme}
184-
- MINIO_DEFAULT_BUCKETS=cosmo
196+
RUSTFS_CONSOLE_ENABLE: 'true'
197+
RUSTFS_ACCESS_KEY: ${S3_ACCESS_KEY_ID:-admin}
198+
RUSTFS_SECRET_KEY: ${S3_SECRET_ACCESS_KEY:-changeme}
185199
ports:
186200
- '10000:9000'
187201
- '10001:9001'
188202
volumes:
189-
- minio:/bitnami/minio/data
203+
# We've previously used minio for S3 provider. Since rustfs is storage-compatible
204+
# with minio, we want to reuse the existing minio volume so that existing data is kept.
205+
- minio:/data
190206
networks:
191207
- primary
192208
profiles:
193209
- dev
210+
post_start:
211+
- command: sh -c "sleep 10 && apk add minio-client && mcli alias set rustfs http://localhost:9000 ${S3_ACCESS_KEY_ID:-admin} ${S3_SECRET_ACCESS_KEY:-changeme} && mcli mb -p rustfs/cosmo"
212+
user: root
194213

195214
cdn:
196215
image: ghcr.io/wundergraph/cosmo/cdn:${DC_CDN_VERSION:-latest}
@@ -202,10 +221,10 @@ services:
202221
NODE_ENV: development
203222
AUTH_JWT_SECRET: ${CDN_AUTH_JWT_SECRET:-fkczyomvdprgvtmvkuhvprxuggkbgwld}
204223
AUTH_ADMISSION_JWT_SECRET: uXDxJLEvrw4aafPfrf3rRotCoBzRfPEW
205-
S3_STORAGE_URL: ${S3_STORAGE_URL:-http://${MINIO_ROOT_USER:-minio}:${MINIO_ROOT_PASSWORD:-changeme}@minio:9000/cosmo}
224+
S3_STORAGE_URL: ${S3_STORAGE_URL:-http://rustfs:9000/cosmo}
206225
S3_REGION: ${S3_REGION_CDN:-${S3_REGION:-auto}}
207-
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
208-
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
226+
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID:-admin}
227+
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY:-changeme}
209228
S3_FORCE_PATH_STYLE: ${S3_FORCE_PATH_STYLE:-true}
210229
ports:
211230
- '11000:11000'

0 commit comments

Comments
 (0)