Skip to content

Instantly share code, notes, and snippets.

@iammichiel
Created January 23, 2017 10:56
Show Gist options
  • Save iammichiel/be5360cf33cbaecc1d4f6b016819a9f6 to your computer and use it in GitHub Desktop.
Save iammichiel/be5360cf33cbaecc1d4f6b016819a9f6 to your computer and use it in GitHub Desktop.
NODE_DOCKER_IMAGE = iammichiel/instant-docker-node:latest
PHP_DOCKER_IMAGE = iammichiel/instant-docker-php:latest
CONTAINER_USERNAME = root
CONTAINER_GROUPNAME = root
HOMEDIR = /root
DOCKER_SSH_IDENTITY ?= ~/.ssh/id_rsa
DOCKER_SSH_KNOWN_HOSTS ?= ~/.ssh/known_hosts
COMPOSER_CACHE_DIR = ~/.composer/cache
BOWER_CACHE_DIR = ~/.bower
YARN_CACHE_DIR = ~/.yarn-cache
ADD_SSH_ACCESS_COMMAND = \
mkdir -p $(HOMEDIR)/.ssh && \
test -e /var/tmp/id && cp /var/tmp/id $(HOMEDIR)/.ssh/id_rsa ; \
test -e /var/tmp/known_hosts && cp /var/tmp/known_hosts $(HOMEDIR)/.ssh/known_hosts ; \
test -e $(HOMEDIR)/.ssh/id_rsa && chmod 600 $(HOMEDIR)/.ssh/id_rsa ;
# utility commands
AUTHORIZE_HOME_DIR_COMMAND = chown -R $(CONTAINER_USERNAME):$(CONTAINER_GROUPNAME) $(HOMEDIR) &&
EXECUTE_AS = sudo -u $(CONTAINER_USERNAME) HOME=$(HOMEDIR)
install: bower_components vendor/autoload.php
package: build
rm -rf node_modules
rm -rf bower_components
rm -rf vendor
docker run --rm -ti \
-w /data \
-v $(PWD):/data \
-v $(COMPOSER_CACHE_DIR):$(HOMEDIR)/composer-cache \
-v $(DOCKER_SSH_IDENTITY):/var/tmp/id \
-v $(DOCKER_SSH_KNOWN_HOSTS):/var/tmp/known_hosts \
$(PHP_DOCKER_IMAGE) sh -c '\
$(ADD_SSH_ACCESS_COMMAND) \
$(AUTHORIZE_HOME_DIR_COMMAND) \
$(EXECUTE_AS) COMPOSER_CACHE_DIR=/root/composer-cache composer install --ignore-platform-reqs -o --no-dev'
watch: bower_components
docker run --rm -ti -w /data -v $(PWD):/data ${NODE_DOCKER_IMAGE} ./node_modules/.bin/gulp
build: bower_components
docker run --rm -ti -w /data -v $(PWD):/data ${NODE_DOCKER_IMAGE} "./node_modules/.bin/gulp build"
bower_components: node_modules
docker run -ti --rm=true \
-w /data \
-v $(PWD):/data \
-v $(BOWER_CACHE_DIR):$(HOMEDIR)/.bower \
${NODE_DOCKER_IMAGE} '\
$(AUTHORIZE_HOME_DIR_COMMAND) \
$(EXECUTE_AS) ./node_modules/.bin/bower install --allow-root \
--config.interactive=false \
--config.storage.cache=$(HOMEDIR)/.bower/cache \
--config.storage.registry=$(HOMEDIR)/.bower/registry \
--config.storage.empty=$(HOMEDIR)/.bower/empty \
--config.storage.packages=$(HOMEDIR)/.bower/packages'
node_modules:
docker run --rm -ti \
-w /data \
-v $(PWD):/data \
-v $(YARN_CACHE_DIR):$(HOMEDIR)/.yarn-cache \
${NODE_DOCKER_IMAGE} \
'$(AUTHORIZE_HOME_DIR_COMMAND) $(EXECUTE_AS) yarn --cache-folder $(HOMEDIR)/.yarn-cache'
vendor/autoload.php:
docker run --rm -ti \
-w /data \
-v $(PWD):/data \
-v $(COMPOSER_CACHE_DIR):$(HOMEDIR)/composer-cache \
-v $(DOCKER_SSH_IDENTITY):/var/tmp/id \
-v $(DOCKER_SSH_KNOWN_HOSTS):/var/tmp/known_hosts \
$(PHP_DOCKER_IMAGE) sh -c '\
$(ADD_SSH_ACCESS_COMMAND) \
$(AUTHORIZE_HOME_DIR_COMMAND) \
$(EXECUTE_AS) COMPOSER_CACHE_DIR=/root/composer-cache composer install --ignore-platform-reqs'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment