1
services: megarepo: image: bsnsoft/megarepo:latest ports: - "8080:8080" environment: SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/megarepo?stringtype=unspecified SPRING_DATASOURCE_USERNAME: megarepo SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD:-megarepo} MEGAREPO_SECURITY_JWT_SECRET: ${MEGAREPO_JWT_SECRET:-change-me-in-production} MEGAREPO_DATA_DIRECTORY: /opt/megarepo/data MEGAREPO_BLOB_STORES_DEFAULT_PATH: /opt/megarepo/data/blobs/default volumes: - megarepo-data:/opt/megarepo/data depends_on: db: condition: service_healthy restart: unless-stopped db: image: postgres:16-alpine environment: POSTGRES_DB: megarepo POSTGRES_USER: megarepo POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-megarepo} volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U megarepo"] interval: 5s retries: 5 restart: unless-stopped volumes: megarepo-data: postgres-data:
docker compose up -d
open http://localhost:8080
2
admin | |
admin123 |
3
Maven
maven-central proxy
maven-releases hosted
maven-snapshots hosted
maven-public group
npm
npm-proxy proxy
npm-hosted hosted
npm-public group
PyPI
pypi-proxy proxy
pypi-hosted hosted
pypi-public group
Raw
raw-hosted hosted
raw-public group
Docker
docker-proxy proxy
docker-hosted hosted
docker-public group
4
<settings> <mirrors> <mirror> <id>megarepo</id> <mirrorOf>*</mirrorOf> <url>http://localhost:8080/repository/maven-public/</url> </mirror> </mirrors> </settings>
mvn clean install
5
registry=http://localhost:8080/repository/npm-public/
npm install
6
[global] index-url = http://localhost:8080/repository/pypi-public/simple/ trusted-host = localhost
pip install requests flask numpy
7
<servers> <server> <id>megarepo-releases</id> <username>admin</username> <password>your-password</password> </server> </servers>
<distributionManagement> <repository> <id>megarepo-releases</id> <url>http://localhost:8080/repository/maven-releases/</url> </repository> </distributionManagement>
mvn deploy
# Get a token via the API //localhost:8080/repository/npm-hosted/:_authToken=your-jwt-token
npm publish --registry http://localhost:8080/repository/npm-hosted/
curl -u admin:your-password \ --upload-file my-app-1.0.tar.gz \ http://localhost:8080/repository/raw-hosted/releases/my-app-1.0.tar.gz