# A Dockerfile for MediaGoblin hacking. # docker build -t mediagoblin-python3 -f Dockerfile-python3 . # docker run -it -p 6543:6543 -v ~/ws/mediagoblin/mediagoblin:/opt/mediagoblin/mediagoblin -v ~/ws/mediagoblin/extlib:/opt/mediagoblin/extlib mediagoblin-python3 # docker stop [container-name/id] # docker start [container-name/id] # docker kill [container-name/id] FROM debian:buster # Install bootstrap and configure dependencies. Currently requires virtualenv # rather than the more modern python3-venv (should be fixed). RUN apt-get update && apt-get install -y \ automake \ git \ nodejs \ npm \ python3-dev \ virtualenv # Install make and runtime dependencies. RUN apt-get install -y \ python3-alembic \ python3-celery \ python3-jsonschema \ python3-kombu \ python3-lxml \ python3-migrate \ python3-py \ python3-pytest \ python3-pytest-xdist \ python3-six \ python3-sphinx \ python3-webtest # Install audio dependencies. RUN apt-get install -y \ gstreamer1.0-libav \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly \ libsndfile1-dev \ python3-gst-1.0 \ python3-numpy \ python3-scipy # Install video dependencies. RUN apt-get install -y \ gir1.2-gst-plugins-base-1.0 \ gir1.2-gstreamer-1.0 \ gstreamer1.0-tools \ python3-gi # Create working directory. RUN mkdir /opt/mediagoblin RUN chown -R www-data:www-data /opt/mediagoblin WORKDIR /opt/mediagoblin # Create /var/www because Bower writes some cache files into /var/www during # make, failing if it doesn't exist. RUN mkdir /var/www RUN chown root:www-data /var/www RUN chmod g+w /var/www USER www-data # Clone MediaGoblin for use during the install. Could alternately copy across # just the files needed to run bootstrap/configure/make. RUN git clone git://git.savannah.gnu.org/mediagoblin.git -b master . RUN git submodule init && git submodule update RUN ./bootstrap.sh RUN VIRTUALENV_FLAGS='--system-site-packages' ./configure --with-python3 RUN make # Re-run installation of Python dependencies - seems to install more things that # didn't get installed with make. That shouldn't happen. RUN ./bin/python setup.py develop --upgrade # Only supported on Python 2. # RUN ./bin/pip install scikits.audiolab # Patch to fix the config defaults that are failing at runtime. Needed here # since we're running `dbupdate` during the Docker build. COPY mediagoblin/init/config.py /opt/mediagoblin/mediagoblin/init/config.py RUN echo '[[mediagoblin.media_types.audio]]' >> mediagoblin.ini RUN echo '[[mediagoblin.media_types.video]]' >> mediagoblin.ini RUN cat mediagoblin.ini # Using default sqlite database for now. RUN ./bin/gmg dbupdate RUN ./bin/gmg adduser --username admin --password a --email admin@example.com RUN ./bin/gmg makeadmin admin # You can change this to /bin/bash if you'd prefer a shell. CMD ["./lazyserver.sh", "--server-name=broadcast"]