# volume mount points CONF = conf STORAGE = storage # config file CONFIG = $(CONF)/config.yaml # Docker stuff DIR = $(shell pwd) IMG = verdaccio/verdaccio NAME = verdaccio .PHONY: all all: ## default configuration $(CONFIG): $(CONF) @echo 'storage: /verdaccio/storage' >> $@ @echo 'auth:' >> $@ @echo ' htpasswd:' >> $@ @echo ' file: /verdaccio/conf/htpasswd' >> $@ @echo 'uplinks:' >> $@ @echo ' npmjs:' >> $@ @echo ' url: https://registry.npmjs.org/' >> $@ @echo 'packages:' >> $@ @echo " '@*/*':" >> $@ @echo ' access: $all' >> $@ @echo ' publish: $authenticated' >> $@ @echo ' proxy: npmjs' >> $@ @echo " '**':" >> $@ @echo ' access: $all' >> $@ @echo ' publish: $authenticated' >> $@ @echo ' proxy: npmjs' >> $@ @echo 'logs:' >> $@ @echo ' - {type: stdout, format: pretty, level: http}' >> $@ ## create volume mount points $(CONF) $(STORAGE): mkdir -p $@ # for a bit more security run: # chmod 755 $@ && su -c 'chown :101 $@' chmod 777 $@ ## start (or replace) the server container .PHONY: run run: $(STORAGE) $(CONFIG) stop docker run \ -dt \ --restart always \ --name $(NAME) \ -p 4873:4873 \ -v $(DIR)/$(CONF):/verdaccio/conf \ -v $(DIR)/$(STORAGE):/verdaccio/storage \ $(IMG) ## show container logs .PHONY: logs logs: docker logs -f $(NAME) || true ## stop and remove the container .PHONY: stop stop: if test -n "$$(docker ps -a -q -f name=$(NAME))"; then \ docker stop $(NAME); \ docker rm $(NAME); \ fi ## update Docker image .PHONY: update update: docker pull $(IMG)