-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathDockerfile
201 lines (176 loc) · 5.4 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
FROM tensorflow/tensorflow:1.8.0-py3
MAINTAINER Eric Heiden <heiden@usc.edu>
ARG USER
ARG HOME
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 USER=$USER HOME=$HOME
RUN echo "The working directory is: $HOME"
RUN echo "The user is: $USER"
RUN mkdir -p $HOME
WORKDIR $HOME
RUN apt-get update && apt-get install -y \
sudo \
git \
&& \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# install dependencies
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
build-essential \
apt-utils \
curl \
nano \
vim \
libfreetype6-dev \
libpng12-dev \
libzmq3-dev \
git \
python-numpy \
python-dev \
python-opengl \
cmake \
zlib1g-dev \
libjpeg-dev \
xvfb \
libav-tools \
xorg-dev \
libboost-all-dev \
libsdl2-dev \
swig \
libgtk2.0-dev \
wget \
ca-certificates \
unzip \
aptitude \
pkg-config \
qtbase5-dev \
libqt5opengl5-dev \
libassimp-dev \
libpython3.5-dev \
libboost-python-dev \
libtinyxml-dev \
golang \
python-opencv \
terminator \
tmux \
libcanberra-gtk-module \
libfuse2 \
libnss3 \
fuse \
python3-tk \
libglfw3-dev \
libgl1-mesa-dev \
libgl1-mesa-glx \
libglew-dev \
libosmesa6-dev \
net-tools \
xpra \
xserver-xorg-dev \
libffi-dev \
libxslt1.1 \
libglew-dev \
parallel \
htop \
apt-transport-https
# install Sublime Text
RUN wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add - \
&& echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y sublime-text
RUN pip3 install --upgrade pip
RUN pip3 --no-cache-dir install \
gym[all]==0.10.3 \
mujoco-py \
scikit-image \
plotly \
ipykernel \
jupyter \
jupyterlab \
matplotlib \
numpy \
scipy \
sklearn \
pandas \
Pillow \
empy \
tqdm \
pyopengl \
ipdb \
cloudpickle \
imageio \
mpi4py \
jsonpickle \
gtimer \
path.py \
cached-property \
flask \
joblib \
lasagne \
PyOpenGL \
six \
pyprind \
virtualenv
# Set up permissions to use same UID and GID as host system user
# https://denibertovic.com/posts/handling-permissions-with-docker-volumes/
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4
RUN curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/1.4/gosu-$(dpkg --print-architecture)" \
&& curl -o /usr/local/bin/gosu.asc -SL "https://github.com/tianon/gosu/releases/download/1.4/gosu-$(dpkg --print-architecture).asc" \
&& gpg --verify /usr/local/bin/gosu.asc \
&& rm /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu
# Install Anaconda 3
RUN echo 'export PATH=/opt/conda/bin:$PATH' > /etc/profile.d/conda.sh \
&& wget --quiet https://repo.continuum.io/archive/Anaconda3-5.1.0-Linux-x86_64.sh -O ~/anaconda.sh \
&& /bin/bash ~/anaconda.sh -b -p /opt/conda \
&& rm ~/anaconda.sh
# Install Jupyter Lab
RUN jupyter serverextension enable --py jupyterlab --sys-prefix
# Jupyter Lab Bokeh extension requires NodeJS
RUN curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - \
&& apt-get install -y nodejs
RUN jupyter labextension install jupyterlab_bokeh
# Install Baselines
RUN cd /opt && git clone https://github.com/openai/baselines.git && cd baselines && pip install -e .
# Install Roboschool
ENV ROBOSCHOOL_PATH=/opt/roboschool
WORKDIR /opt
RUN git clone https://github.com/openai/roboschool.git /opt/roboschool
RUN git clone https://github.com/olegklimov/bullet3 -b roboschool_self_collision \
&& mkdir bullet3/build \
&& cd bullet3/build \
&& cmake -DBUILD_SHARED_LIBS=ON -DUSE_DOUBLE_PRECISION=1 -DCMAKE_INSTALL_PREFIX:PATH=$ROBOSCHOOL_PATH/roboschool/cpp-household/bullet_local_install -DBUILD_CPU_DEMOS=OFF -DBUILD_BULLET2_DEMOS=OFF -DBUILD_EXTRAS=OFF -DBUILD_UNIT_TESTS=OFF -DBUILD_CLSOCKET=OFF -DBUILD_ENET=OFF -DBUILD_OPENGL3_DEMOS=OFF .. \
&& make -j4 \
&& make install
RUN pip3 install -e /opt/roboschool
ENV DOCKER_HOME=$HOME
COPY ./internal/ /
# Install VirtualGL
RUN dpkg -i /virtualgl_2.5.2_amd64.deb && rm /virtualgl_2.5.2_amd64.deb
# Install MuJoCo 1.50 and 1.31
WORKDIR /opt
RUN mkdir mujoco && cd mujoco \
&& wget https://www.roboti.us/download/mjpro150_linux.zip \
&& unzip mjpro150_linux.zip \
&& rm mjpro150_linux.zip \
&& wget https://www.roboti.us/download/mjpro131_linux.zip \
&& unzip mjpro131_linux.zip \
&& rm mjpro131_linux.zip \
&& if [ -f "/mjkey.txt" ]; \
then \
mv /mjkey.txt . && \
cp mjkey.txt mjpro150/bin/ && \
cp mjkey.txt mjpro131/bin/ && \
echo "Installed MuJoCo Key file." ; \
else \
echo "Could not find MuJoCo key file (mjkey.txt) in ./internal!\nPlease copy it manually to ~/.mujoco when inside the docker container." 1>&2 ; \
fi
ENV MUJOCO_PY_MJPRO_PATH=/opt/mujoco/mjpro150
ENV MUJOCO_LICENSE_KEY=/opt/mujoco/mjkey.txt
ENV MUJOCO_PY_MUJOCO_PATH=/opt/mujoco
ENV LD_LIBRARY_PATH /opt/mujoco/mjpro150/bin:$LD_LIBRARY_PATH
ENV TERM xterm-256color
# Install mujoco-py
RUN pip3 --no-cache-dir install mujoco-py==0.5.7
# TensorBoard
EXPOSE 6006
# Jupyter
EXPOSE 8888
ENTRYPOINT ["/docker-entrypoint.sh"]