Commit d7ad3e96 by Ned Batchelder

WIP: docker on releases

parent 2d984835
.PHONY: docker.build docker.test docker.pkg
# Define OPENEDX_RELEASE in the environment to build something other than master.
OPENEDX_RELEASE ?= master
ifneq ($(OPENEDX_RELEASE),master)
IMAGE_PREFIX := $(patsubst open-release/%.master,%/,$(OPENEDX_RELEASE))
endif
SHARD=0
SHARDS=1
......@@ -58,26 +64,30 @@ docker.test: $(foreach image,$(images),$(docker_test)$(image))
docker.pkg: $(foreach image,$(images),$(docker_pkg)$(image))
docker.push: $(foreach image,$(images),$(docker_push)$(image))
BUILD_ARGS = --build-arg OPENEDX_RELEASE=$(OPENEDX_RELEASE) --build-arg IMAGE_PREFIX=$(IMAGE_PREFIX)
BUILD_DIR = .build/$(IMAGE_PREFIX)
$(docker_pull)%:
docker pull $(subst @,:,$*)
$(docker_build)%: docker/build/%/Dockerfile
docker build -f $< .
docker build $(BUILD_ARGS) -f $< .
$(docker_test)%: .build/%/Dockerfile.test
docker build -t $*:test -f $< .
$(docker_test)%: $(BUILD_DIR)%/Dockerfile.test
docker build $(BUILD_ARGS) -t $(IMAGE_PREFIX)$*:test -f $< .
$(docker_pkg)%: .build/%/Dockerfile.pkg
docker build -t $*:latest -f $< .
$(docker_pkg)%: $(BUILD_DIR)%/Dockerfile.pkg
docker build $(BUILD_ARGS) -t $(IMAGE_PREFIX)$*:latest -f $< .
$(docker_push)%: $(docker_pkg)%
docker tag $*:latest edxops/$*:latest
docker push edxops/$*:latest
docker tag $(IMAGE_PREFIX)$*:latest edxops/$(IMAGE_PREFIX)$*:latest
docker push edxops/$(IMAGE_PREFIX)$*:latest
.SECONDARY: $(BUILD_DIR)%/Dockerfile.d $(BUILD_DIR)%/Dockerfile.test $(BUILD_DIR)%/Dockerfile.pkg
.build/%/Dockerfile.d: docker/build/%/Dockerfile Makefile
@mkdir -p .build/$*
$(eval FROM=$(shell grep "^\s*FROM" $< | sed -E "s/FROM //" | sed -E "s/:/@/g"))
$(BUILD_DIR)%/Dockerfile.d: docker/build/%/Dockerfile Makefile
@mkdir -p $(BUILD_DIR)$*
$(eval FROM=$(shell grep "^\s*FROM" $< | sed -E "s/FROM //" | sed -E "s/\\\$${IMAGE_PREFIX}//" | sed -E "s/:/@/g"))
$(eval EDXOPS_FROM=$(shell echo "$(FROM)" | sed -E "s#edxops/([^@]+)(@.*)?#\1#"))
@echo "$(docker_build)$*: $(docker_pull)$(FROM)" > $@
@if [ "$(EDXOPS_FROM)" != "$(FROM)" ]; then \
......@@ -88,14 +98,14 @@ $(docker_push)%: $(docker_pkg)%
echo "$(docker_pkg)$*: $(docker_pull)$(FROM)" >> $@; \
fi
.build/%/Dockerfile.test: docker/build/%/Dockerfile Makefile
@mkdir -p .build/$*
$(BUILD_DIR)%/Dockerfile.test: docker/build/%/Dockerfile Makefile
@mkdir -p $(BUILD_DIR)$*
@# perl p (print the line) n (loop over every line) e (exec the regex), like sed but cross platform
@perl -pne "s#FROM edxops/([^:]+)(:\S*)?#FROM \1:test#" $< > $@
.build/%/Dockerfile.pkg: docker/build/%/Dockerfile Makefile
@mkdir -p .build/$*
$(BUILD_DIR)%/Dockerfile.pkg: docker/build/%/Dockerfile Makefile
@mkdir -p $(BUILD_DIR)$*
@# perl p (print the line) n (loop over every line) e (exec the regex), like sed but cross platform
@perl -pne "s#FROM edxops/([^:]+)(:\S*)?#FROM \1:test#" $< > $@
-include $(foreach image,$(images),.build/$(image)/Dockerfile.d)
-include $(foreach image,$(images),$(BUILD_DIR)$(image)/Dockerfile.d)
......@@ -8,7 +8,8 @@
# with the currently checked-out configuration repo.
FROM edxops/xenial-common:latest
ARG IMAGE_PREFIX
FROM edxops/${IMAGE_PREFIX}xenial-common:latest
MAINTAINER edxops
USER root
CMD ["/edx/app/supervisor/venvs/supervisor/bin/supervisord", "-n", "--configuration", "/edx/app/supervisor/supervisord.conf"]
......@@ -18,9 +19,12 @@ WORKDIR /edx/app/edx_ansible/edx_ansible/docker/plays
COPY docker/build/edxapp/ansible_overrides.yml /
ARG OPENEDX_RELEASE=master
ENV OPENEDX_RELEASE=${OPENEDX_RELEASE}
RUN sudo /edx/app/edx_ansible/venvs/edx_ansible/bin/ansible-playbook edxapp.yml \
-c local -i '127.0.0.1,' \
-t 'install,assets,devstack' \
--extra-vars=edx_platform_version=$OPENEDX_RELEASE \
--extra-vars="@/ansible_overrides.yml"
EXPOSE 18000 18010
......@@ -8,7 +8,6 @@ EDXAPP_MONGO_HOSTS:
devstack: true
migrate_db: false
mongo_enable_journal: false
edx_platform_version: 'master'
edxapp_npm_production: "no"
EDXAPP_LMS_GUNICORN_EXTRA_CONF: 'reload = True'
......
FROM ubuntu:xenial
MAINTAINER edxops
MAINTAINER edxops
# Set locale to UTF-8 which is not the default for docker.
# See the links for details:
......@@ -10,7 +10,8 @@ ENV LANG C.UTF-8
ENV ANSIBLE_REPO="https://github.com/edx/ansible"
ENV CONFIGURATION_REPO="https://github.com/edx/configuration.git"
ENV CONFIGURATION_VERSION="master"
ARG OPENEDX_RELEASE=master
ENV CONFIGURATION_VERSION="$OPENEDX_RELEASE"
ADD util/install/ansible-bootstrap.sh /tmp/ansible-bootstrap.sh
RUN chmod +x /tmp/ansible-bootstrap.sh
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment