Fig deprecated in favor of docker-compose, better Dockerfile
This commit is contained in:
Родитель
d3f0fbe6cc
Коммит
9d4d2ae38f
32
Dockerfile
32
Dockerfile
|
@ -1,14 +1,28 @@
|
||||||
FROM python:2.7
|
FROM python:2.7
|
||||||
|
|
||||||
RUN apt-get update
|
RUN apt-get update \
|
||||||
RUN apt-get install -y python-dev python-virtualenv libxml2-dev libxslt1-dev libmysqlclient-dev memcached libssl-dev swig openssl curl libjpeg-dev zlib1g-dev libsasl2-dev nodejs npm mysql-client
|
&& apt-get install -y \
|
||||||
RUN ln -s /usr/bin/nodejs /usr/bin/node
|
curl \
|
||||||
|
libjpeg-dev \
|
||||||
WORKDIR /code
|
libmysqlclient-dev \
|
||||||
|
libsasl2-dev \
|
||||||
|
libssl-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
libxslt1-dev \
|
||||||
|
memcached \
|
||||||
|
mysql-client \
|
||||||
|
nodejs \
|
||||||
|
npm \
|
||||||
|
python-dev \
|
||||||
|
python-virtualenv \
|
||||||
|
swig openssl \
|
||||||
|
zlib1g-dev \
|
||||||
|
&& ln -s /usr/bin/nodejs /usr/bin/node
|
||||||
|
|
||||||
ADD . /code
|
ADD . /code
|
||||||
|
WORKDIR /code
|
||||||
|
|
||||||
|
RUN pip install --no-deps --exists-action=w --download-cache=/tmp/pip-cache \
|
||||||
|
-r requirements/dev.txt --find-links https://pyrepo.addons.mozilla.org/ \
|
||||||
|
--src=/pip-src/
|
||||||
|
|
||||||
RUN pip install --no-deps --exists-action=w --download-cache=/tmp/pip-cache -r requirements/dev.txt --find-links https://pyrepo.addons.mozilla.org/ --src=/pip-src/
|
|
||||||
RUN pip install --no-deps --exists-action=w --download-cache=/tmp/pip-cache -r requirements/docs.txt --find-links https://pyrepo.addons.mozilla.org/ --src=/pip-src/
|
|
||||||
RUN npm install
|
|
||||||
RUN make update_assets
|
|
||||||
|
|
62
Makefile
62
Makefile
|
@ -4,9 +4,9 @@ NUM_THEMES=$(NUM_ADDONS)
|
||||||
|
|
||||||
UNAME_S := $(shell uname -s)
|
UNAME_S := $(shell uname -s)
|
||||||
|
|
||||||
# If you're using docker and fig, you can use this Makefile to run commands in
|
# If you're using docker and docker-compose, you can use this Makefile to run
|
||||||
# your docker images by setting the FIG_PREFIX environment variable to:
|
# commands in your docker images by setting the DOCKER_PREFIX environment variable
|
||||||
# FIG_PREFIX="fig run --rm web"
|
# to: DOCKER_PREFIX="docker-compose run --rm web"
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@echo "Please use 'make <target>' where <target> is one of"
|
@echo "Please use 'make <target>' where <target> is one of"
|
||||||
|
@ -27,63 +27,63 @@ help:
|
||||||
@echo "Check the Makefile to know exactly what each target is doing. If you see a "
|
@echo "Check the Makefile to know exactly what each target is doing. If you see a "
|
||||||
|
|
||||||
docs:
|
docs:
|
||||||
$(FIG_PREFIX) $(MAKE) -C docs html
|
$(DOCKER_PREFIX) $(MAKE) -C docs html
|
||||||
|
|
||||||
test:
|
test:
|
||||||
$(FIG_PREFIX) py.test $(ARGS)
|
$(DOCKER_PREFIX) py.test $(ARGS)
|
||||||
|
|
||||||
test_es:
|
test_es:
|
||||||
$(FIG_PREFIX) py.test -m es_tests $(ARGS)
|
$(DOCKER_PREFIX) py.test -m es_tests $(ARGS)
|
||||||
|
|
||||||
test_no_es:
|
test_no_es:
|
||||||
$(FIG_PREFIX) py.test -m "not es_tests" $(ARGS)
|
$(DOCKER_PREFIX) py.test -m "not es_tests" $(ARGS)
|
||||||
|
|
||||||
test_force_db:
|
test_force_db:
|
||||||
$(FIG_PREFIX) py.test --create-db $(ARGS)
|
$(DOCKER_PREFIX) py.test --create-db $(ARGS)
|
||||||
|
|
||||||
tdd:
|
tdd:
|
||||||
$(FIG_PREFIX) py.test -x --pdb $(ARGS)
|
$(DOCKER_PREFIX) py.test -x --pdb $(ARGS)
|
||||||
|
|
||||||
test_failed:
|
test_failed:
|
||||||
$(FIG_PREFIX) py.test --lf $(ARGS)
|
$(DOCKER_PREFIX) py.test --lf $(ARGS)
|
||||||
|
|
||||||
initialize_db:
|
initialize_db:
|
||||||
$(FIG_PREFIX) python manage.py reset_db
|
$(DOCKER_PREFIX) python manage.py reset_db
|
||||||
$(FIG_PREFIX) python manage.py syncdb --noinput
|
$(DOCKER_PREFIX) python manage.py syncdb --noinput
|
||||||
$(FIG_PREFIX) python manage.py loaddata initial.json
|
$(DOCKER_PREFIX) python manage.py loaddata initial.json
|
||||||
$(FIG_PREFIX) python manage.py import_prod_versions
|
$(DOCKER_PREFIX) python manage.py import_prod_versions
|
||||||
$(FIG_PREFIX) schematic --fake migrations/
|
$(DOCKER_PREFIX) schematic --fake migrations/
|
||||||
$(FIG_PREFIX) python manage.py createsuperuser
|
$(DOCKER_PREFIX) python manage.py createsuperuser
|
||||||
$(FIG_PREFIX) python manage.py loaddata zadmin/users
|
$(DOCKER_PREFIX) python manage.py loaddata zadmin/users
|
||||||
|
|
||||||
populate_data:
|
populate_data:
|
||||||
$(FIG_PREFIX) python manage.py generate_addons --app firefox $(NUM_ADDONS)
|
$(DOCKER_PREFIX) python manage.py generate_addons --app firefox $(NUM_ADDONS)
|
||||||
$(FIG_PREFIX) python manage.py generate_addons --app thunderbird $(NUM_ADDONS)
|
$(DOCKER_PREFIX) python manage.py generate_addons --app thunderbird $(NUM_ADDONS)
|
||||||
$(FIG_PREFIX) python manage.py generate_addons --app android $(NUM_ADDONS)
|
$(DOCKER_PREFIX) python manage.py generate_addons --app android $(NUM_ADDONS)
|
||||||
$(FIG_PREFIX) python manage.py generate_addons --app seamonkey $(NUM_ADDONS)
|
$(DOCKER_PREFIX) python manage.py generate_addons --app seamonkey $(NUM_ADDONS)
|
||||||
$(FIG_PREFIX) python manage.py generate_themes $(NUM_THEMES)
|
$(DOCKER_PREFIX) python manage.py generate_themes $(NUM_THEMES)
|
||||||
$(FIG_PREFIX) python manage.py reindex --wipe --force
|
$(DOCKER_PREFIX) python manage.py reindex --wipe --force
|
||||||
|
|
||||||
update_code:
|
update_code:
|
||||||
$(FIG_PREFIX) git checkout master && git pull
|
$(DOCKER_PREFIX) git checkout master && git pull
|
||||||
|
|
||||||
update_deps:
|
update_deps:
|
||||||
$(FIG_PREFIX) pip install --no-deps --exists-action=w --download-cache=/tmp/pip-cache -r requirements/dev.txt --find-links https://pyrepo.addons.mozilla.org/wheelhouse/
|
$(DOCKER_PREFIX) pip install --no-deps --exists-action=w --download-cache=/tmp/pip-cache -r requirements/dev.txt --find-links https://pyrepo.addons.mozilla.org/wheelhouse/
|
||||||
$(FIG_PREFIX) npm install
|
$(DOCKER_PREFIX) npm install
|
||||||
|
|
||||||
update_db:
|
update_db:
|
||||||
$(FIG_PREFIX) schematic migrations
|
$(DOCKER_PREFIX) schematic migrations
|
||||||
|
|
||||||
update_assets:
|
update_assets:
|
||||||
$(FIG_PREFIX) python manage.py compress_assets
|
$(DOCKER_PREFIX) python manage.py compress_assets
|
||||||
$(FIG_PREFIX) python manage.py collectstatic --noinput
|
$(DOCKER_PREFIX) python manage.py collectstatic --noinput
|
||||||
|
|
||||||
full_init: update_deps initialize_db populate_data update_assets
|
full_init: update_deps initialize_db populate_data update_assets
|
||||||
|
|
||||||
full_update: update_code update_deps update_db update_assets
|
full_update: update_code update_deps update_db update_assets
|
||||||
|
|
||||||
reindex:
|
reindex:
|
||||||
$(FIG_PREFIX) python manage.py reindex $(ARGS)
|
$(DOCKER_PREFIX) python manage.py reindex $(ARGS)
|
||||||
|
|
||||||
flake8:
|
flake8:
|
||||||
$(FIG_PREFIX) flake8 --ignore=E265,E266 --exclude=services,wsgi,docs,node_modules,build*.py .
|
$(DOCKER_PREFIX) flake8 --ignore=E265,E266 --exclude=services,wsgi,docs,node_modules,build*.py .
|
||||||
|
|
|
@ -18,39 +18,43 @@ few easy steps::
|
||||||
|
|
||||||
git clone git://github.com/mozilla/olympia.git
|
git clone git://github.com/mozilla/olympia.git
|
||||||
cd olympia
|
cd olympia
|
||||||
pip install fig
|
pip install docker-compose
|
||||||
fig build # Can be very long depending on your internet bandwidth.
|
docker-compose build # Can be very long depending on your internet bandwidth.
|
||||||
fig run web make initialize_db # Create your superuser when asked.
|
docker-compose run web npm install # Install the npm dependencies.
|
||||||
fig up
|
docker-compose run web make update_assets # Compile the css files.
|
||||||
|
docker-compose run web make initialize_db # Answer yes, and create your superuser when asked.
|
||||||
|
docker-compose up
|
||||||
# Once it's all loaded, go to http://localhost:8000 and enjoy!
|
# Once it's all loaded, go to http://localhost:8000 and enjoy!
|
||||||
|
|
||||||
|
On the last step, if you're using boot2docker, you-ll need to first find its
|
||||||
|
ip, and connect to that instead::
|
||||||
|
|
||||||
|
boot2docker ip
|
||||||
|
|
||||||
This needs a working installation of docker_, please check the information for
|
This needs a working installation of docker_, please check the information for
|
||||||
your operating system.
|
your operating system.
|
||||||
|
|
||||||
.. _docker: https://docs.docker.com/installation/#installation
|
.. _docker: https://docs.docker.com/installation/#installation
|
||||||
|
|
||||||
All the commands should then be run with the `fig run --rm web` prefix, eg::
|
All the commands should then be run with the `docker-compose run web`
|
||||||
|
prefix, eg::
|
||||||
|
|
||||||
fig run --rm web manage.py test
|
docker-compose run web py.test
|
||||||
|
|
||||||
.. note:: If you wish to use the Makefile provided with the environment, you
|
.. note:: If you wish to use the Makefile provided with the environment, you
|
||||||
should first set the `FIG_PREFIX` environment variable::
|
should first set the `DOCKER_PREFIX` environment variable::
|
||||||
|
|
||||||
export FIG_PREFIX="fig run --rm web"
|
export DOCKER_PREFIX="docker-compose run --rm web"
|
||||||
|
|
||||||
The `make` command will then automatically add the prefix for you!
|
The `make` command will then automatically add the prefix for you!
|
||||||
|
|
||||||
.. note:: The `--rm` parameter to the `fig run` command will tell fig to remove
|
|
||||||
the created container straight after being finished with it, to avoid
|
|
||||||
useless containers packing up after each command.
|
|
||||||
|
|
||||||
Please note that any command that would result in files added or modified
|
Please note that any command that would result in files added or modified
|
||||||
outside of the `olympia` folder (eg modifying pip or npm dependencies) won't be
|
outside of the `olympia` folder (eg modifying pip or npm dependencies) won't be
|
||||||
persisted, and so won't survive after the container is finished.
|
persisted, and so won't survive after the container is finished.
|
||||||
If you need persistence, make sure this command is run in the `Dockerfile` and
|
If you need persistence, make sure this command is run in the `Dockerfile` and
|
||||||
do a full rebuild::
|
do a full rebuild::
|
||||||
|
|
||||||
fig build
|
docker-compose build
|
||||||
|
|
||||||
Installation
|
Installation
|
||||||
------------
|
------------
|
||||||
|
|
Загрузка…
Ссылка в новой задаче