Sign inSign up

mjpulido/frict:latest-compose-single

Manifest digest

sha256:7bf0c7e01f736bc6da5d52f98d1f7eda0aee02f989439d2f709fde19c3380e43

Last pushed

3 months by mjpulido

Type

Compose

Manifest digest

sha256:7bf0c7e01f736bc6da5d52f98d1f7eda0aee02f989439d2f709fde19c3380e43

Compose file content

name: frict-dev
services:
  mysql:
    image: mysql:8.0
    container_name: frict-dev-mysql
    restart: unless-stopped
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: Frict
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    volumes:
      - mysql_data_dev:/var/lib/mysql
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
  mongodb:
    image: mongo:latest
    container_name: frict-dev-mongo
    restart: unless-stopped
    ports:
      - "27017:27017"
    environment:
      - MONGO_INITDB_ROOT_USERNAME=user
      - MONGO_INITDB_ROOT_PASSWORD=password
    command: >
      sh -c "echo 'frictSuperSecretReplicaKey123456' > /data/keyfile && chmod 400 /data/keyfile && chown 999:999 /data/keyfile && exec /usr/local/bin/docker-entrypoint.sh mongod --replSet rs0 --keyFile /data/keyfile --bind_ip_all"

    volumes:
      - mongodb_data_dev:/data/db
    healthcheck:
      test: >
        mongosh --username user --password password --authenticationDatabase admin --eval "try { rs.status() } catch (e) { rs.initiate({_id:'rs0',members:[{_id:0,host:'mongodb:27017'}]}) }" --quiet

      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
  minio:
    image: minio/minio:RELEASE.2025-09-07T16-13-09Z
    container_name: frict-dev-minio
    restart: unless-stopped
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      MINIO_ROOT_USER: "user"
      MINIO_ROOT_PASSWORD: "password"
      MINIO_SERVER_URL: "https://localhost:9000"
      MINIO_BROWSER_REDIRECT_URL: "https://localhost:9001"
    command: server /data --console-address ":9001"
    volumes:
      - minio_data_dev:/data
    configs:
      - source: minio_public_crt
        target: /root/.minio/certs/public.crt
      - source: minio_private_key
        target: /root/.minio/certs/private.key
    healthcheck:
      test: ["CMD", "curl", "-k", "-f", "https://localhost:9000/minio/health/live"]
      interval: 10s
      timeout: 5s
      retries: 5
  app:
    image: mjpulido/frict:latest
    container_name: frict-dev-app
    restart: unless-stopped
    ports:
      - "443:8443"
    environment:
      SPRING_PROFILES_ACTIVE: local
      MYSQL_HOST: mysql
      MYSQL_PORT: "3306"
      MYSQL_DATABASE: Frict
      MYSQL_USERNAME: user
      MYSQL_PASSWORD: password
      MONGODB_URI: "mongodb://user:password@mongodb:27017/Frict?authSource=admin&replicaSet=rs0"
      APP_STORAGE_ENDPOINT: https://minio:9000
      APP_STORAGE_PUBLIC_URL: https://localhost:9000/images
      APP_STORAGE_BUCKET_NAME: images
      AWS_ACCESS_KEY_ID: user
      AWS_SECRET_ACCESS_KEY: password
      JWT_SECRET: c3VwZXJfc2VjcmV0X2tleV9mb3JfZGV2ZWxvcG1lbnRfcHVycG9zZXNfb25seV8xMjM0NTY3ODkw
      DB_ENCRYPTION_KEY: "1234567890123456"
      CORS_ALLOWED_ORIGIN: https://localhost
    env_file:
      - path: .env
        required: false
    configs:
      - source: minio_public_crt
        target: /certs/public.crt
    depends_on:
      mysql:
        condition: service_healthy
      minio:
        condition: service_healthy
      mongodb:
        condition: service_healthy
volumes:
  mysql_data_dev:
  mongodb_data_dev:
  minio_data_dev:
configs:
  minio_public_crt:
    content: |
      -----BEGIN CERTIFICATE-----
      MIIDLDCCAhSgAwIBAgIUUqoM0hYMwvxNXFAe3bTV52UJ0EcwDQYJKoZIhvcNAQEL
      BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI2MDUyNDIyNDYyMloXDTM2MDUy
      MTIyNDYyMlowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
      AAOCAQ8AMIIBCgKCAQEAuoEHig/XYY/7v+uH1IxFucJxfHSMAgtVuhoNHWPi7iVF
      ++qfWq6L3ONGnwV/eqpSLm6xQmlEMXGaoREzjc34qaD+mmGX6mDNSzOHG/Cq3svj
      duvNJquyBBNm3KfQCqKOXfStZdyKOKKL8RwC3X92Vwj5J8wuWPD0+KbUX7yOFFgi
      nSsZtmQhGEuz95NsgN6tn7xE3TRkl5UGVobmlnrjYccEYOUpeZ1WvX0liwJZXlTn
      63x322pHM1Q4u4QLrWKHSYvl82UesbEtq19JpbrM7y8CQIK2Sjl5slWRdzVvAWBO
      xgoZapINBxEVAeyUf0DByLanOqGZ7FjkcxboAd+dqwIDAQABo3YwdDAdBgNVHQ4E
      FgQUMluAl3xT+SY9V0qg84KVriG4zoowHwYDVR0jBBgwFoAUMluAl3xT+SY9V0qg
      84KVriG4zoowDwYDVR0TAQH/BAUwAwEB/zAhBgNVHREEGjAYgglsb2NhbGhvc3SC
      BW1pbmlvhwR/AAABMA0GCSqGSIb3DQEBCwUAA4IBAQCi6dHbNXvzNI+F8FA8MxdR
      6B5jIBUs9k9cyLd9u2GOFNgnZf/ncypSct1hV4xJhQLpkxuxxBwBrP176vagYadK
      B9N5+ju+mUABxOkBdAFhcJa7Sxt/Udgo7wsfKXCC9BGfVoZn/3hq9242IpjHfUxg
      fEhNL/jBhueKED6trugDJLhI+Z9veKq7YOwmq747I5VzR+EAuucZtpgKJXfByk29
      ZLii1kCQIgfwla0f2W4faTspn5KN5JfVHBx0GQTo5jzWtLqCnIdqprz/1guwcVxw
      58RToaOTF/gTohGKOf696NHEGKyvq+17GcHeN0pPPNNYF94qK9JZ8fjEhRx4XhKF
      -----END CERTIFICATE-----
  minio_private_key:
    content: |
      -----BEGIN PRIVATE KEY-----
      MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC6gQeKD9dhj/u/
      64fUjEW5wnF8dIwCC1W6Gg0dY+LuJUX76p9arovc40afBX96qlIubrFCaUQxcZqh
      ETONzfipoP6aYZfqYM1LM4cb8Krey+N2680mq7IEE2bcp9AKoo5d9K1l3Io4oovx
      HALdf3ZXCPknzC5Y8PT4ptRfvI4UWCKdKxm2ZCEYS7P3k2yA3q2fvETdNGSXlQZW
      huaWeuNhxwRg5Sl5nVa9fSWLAlleVOfrfHfbakczVDi7hAutYodJi+XzZR6xsS2r
      X0mluszvLwJAgrZKOXmyVZF3NW8BYE7GChlqkg0HERUB7JR/QMHItqc6oZnsWORz
      FugB352rAgMBAAECggEAC9RNbAuQdppYGu1man5RviHf6mv9t2F6PXATtd+5q2Y0
      0zonqBCR+pZ1ypq9T7I+4b3GnuSDXUTnlYVOkkwLOPVnHCDurpLOPhGerpB+eW50
      xMW0wOw7HTijPjhaV8gObcNQ0II6I4+cWkIl7c3qpI0DOTTqh1ymTjNyr2QeC78v
      VR4a27oKa4qsM16FbX5G77KNqXi+X+jw4HfGJoA0x/8Danv/M0A/7zMeBDsYpSoL
      BwVJkrhzNbQYxKPXRKu996iIsVNXSTWqkRTLBbYM6SOrzzgtIJ/bxK/aetoDiSRf
      dS4v+bumVEl2LNv3Z20oHkbpw9t1QyA7LFsxn2hz7QKBgQDfcPbYL7vTZMLEvShl
      8lV8gQZUDVCVZD0R1fvY/L8Rjecy5JqCrEYcSCQ2izBldPzUlcSTNs9Elfh4Qp9h
      SByzPWhaGeEfXJuhOLzwTXlX3TCz1VtAuC4/vxvJnSEDdioTg5DwDFI3WceUuIqe
      7SM1d2z0T98gWY95JOeqH3YsZQKBgQDVrjGyfVVXrFUZa70+Bv6Q5qnkQ7rxfFj8
      AO6XRJvMrVjm4eV3r8zUJSQ/IdFGMAdhsLtfEjfsLLmcWKMtzCkRYmu623ZZZho6
      0D2LOqwcyKcOJIZNalteny39Z+mukhNVGtww71jf1o3I5zpO2upJxgN1GUmR2chg
      Mmrbu2NYzwKBgQCfNxR9yc2x/UuX+x3NPxfRJvNGc1JnkUy+59aUsMzJim8jYagD
      0xQGVRWQ1C/BK9J4/Ntc9yJMQf0SXI7LOCJTSj+QbH5w5YF0KUTgiqQbit6IVlC2
      1kcGX3xCdreuisXCr+5YTr9K96tyeuk0A9Ah6h52HG/m0kqczUJShCalzQKBgQCD
      YHSBz3l3TCeOV6Wky1wc7xUpmVMJQnDbkB8htjcsYrA0VFNngRkoniVpA3vN8Z24
      PJcXXvYvKVh9finl8I6Xd7HQ0zoywQoDeyE7xzknAV9k3KQOWQQQa0I1eXw9ruZf
      /wG+vIoiJaJLEY/SB9rgvPRHPOL037fJHXaB3va4FQKBgQCNjonQLDVDPhqgaEFd
      uT0dW2oO2WPS+WQUwmRqA3Ua0UcR3inOUP1QLK6hlQAUZ0uWNw1IsQ6tmxkm8ovR
      2KAgIYTglT6yRc8pG5G/QgtiZ+iIRiXfNTLf66NstPAGA9oapY4M7k8qNo8izKj4
      NgapyhxfJc0giUeWs4d9uwvZXQ==
      -----END PRIVATE KEY-----

Docker commands

docker compose -f oci://mjpulido/frict:latest-compose-single up

Use the above command to pull and run the Compose file. Learn more.

Images used

Image + 1 more

MySQL is a widely used, open-source relational database management system (RDBMS).


Pulls

1B+

Stars

16185

Last Updated

8 days

Image + 1 more

MongoDB document databases provide high availability and easy scalability.


Pulls

1B+

Stars

10750

Last Updated

3 days

Compose + 1 more


Pulls

3.5K

Stars

0

Last Updated

3 months