Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
*.pkl

data
tutorials

brainiak.egg-info
build
Expand Down
3 changes: 2 additions & 1 deletion CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -342,8 +342,9 @@ To make a release:
anaconda upload -u brainiak \
$CONDA_HOME/conda-bld/<OS>/brainiak-<v>-<python_version>.tar.bz2

9. Build and push the Docker image::
9. Build and push the Docker image (requires brainiak-tutorials checkout)::

cd tutorials && git pull --ff-only && cd -
docker build --no-cache -t brainiak/brainiak .
docker push brainiak/brainiak

Expand Down
27 changes: 17 additions & 10 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
FROM ubuntu:16.04
FROM ubuntu:18.04

ARG DEBIAN_FRONTEND=noninteractive
# Group 1 must be synced with README
# Group 2 must be synced with requirements for examples
# Group 3 must be synced with rest of Dockerfile
# Group 4 is optional
# Group 5 must be synced with requirements for tutorials
RUN apt-get update && apt-get install -y \
build-essential \
libgomp1 \
Expand All @@ -23,22 +25,27 @@ RUN apt-get update && apt-get install -y \
\
less \
man \
vim
vim \
\
libssl-dev

COPY dist/brainiak-* /mnt/brainiak

WORKDIR /mnt/brainiak

WORKDIR /mnt
COPY tutorials/tutorials tutorials

RUN set -e \
&& python3 -m pip install --user -U pip \
&& python3 -m pip install -U brainiak \
&& python3 -m pip download --no-deps --no-binary :all: brainiak \
&& export BRAINIAK_VERSION=$(basename brainiak-* .tar.gz | cut -b 10-) \
&& tar -xf brainiak-*.tar.gz \
&& for example in brainiak-$BRAINIAK_VERSION/examples/*/requirements.txt; \
&& python3 -m pip install --user -U "pip<10" \
&& python3 -m pip install --user -U . \

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For clarity I'd prefer to have WORKDIR /mnt and
&& python3 -m pip install --user -U brainiak
&& python3 -m pip install --user -U -r brainiak/tutorials/requirements.txt
&& for example in brainiak/examples/*/requirements.txt; \

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From the user perspective, I think WORKDIR should be brainiak, so users can easily find the tutorials and examples. As for clarity in the Dockerfile for developers, I think developers are used to working inside the brainiak directory.

&& python3 -m pip install --user -U -r tutorials/requirements.txt \
&& for example in examples/*/requirements.txt; \
do python3 -m pip install --user -U -r $example ; done

RUN echo PATH=\"\$HOME/.local/bin:\$PATH\" >> $HOME/.profile \
&& echo "shell -bash" >> ~/.screenrc

EXPOSE 8888
EXPOSE 8899

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't we want to stay with port 8888 because that is what Jupiter prints as the URL when it starts? I remember users getting confused by that.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is consistent with the script that we run automatically, so Jupyter will print the right thing:
https://github.com/brainiak/brainiak-tutorials/blob/master/tutorials/run_jupyter_docker.sh#L2


ENTRYPOINT ["/bin/bash", "-l"]
CMD ["tutorials/run_jupyter_docker.sh"]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want the tutorials to automatically start? Seems like most of the time the user of brainiak docker will not be using the tutorials.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the tutorials are a great way to start for all users of BrainIAK. At the same time, we should add instructions to the website about starting a shell (hint: add -c bash at the end of the docker run command).