Skip to content

Commit 831f271

Browse files
committed
Update docker
1 parent 3555a00 commit 831f271

File tree

2 files changed

+51
-91
lines changed

2 files changed

+51
-91
lines changed

.github/workflows/docker.yml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Publish Docker image
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches: [main]
7+
schedule:
8+
- cron: '0 0 * * 1'
9+
10+
jobs:
11+
push_to_registry:
12+
name: Push Docker image
13+
runs-on: ubuntu-latest
14+
steps:
15+
- name: Set up Docker Buildx
16+
uses: docker/setup-buildx-action@v3
17+
- name: Log in to Docker Hub
18+
uses: docker/login-action@v3
19+
with:
20+
registry: ghcr.io
21+
username: ${{ github.actor }}
22+
password: ${{ secrets.GITHUB_TOKEN }}
23+
- name: Extract metadata (tags, labels) for Docker
24+
id: meta
25+
uses: docker/metadata-action@v5
26+
with:
27+
images: ghcr.io/yitzchak/common-lisp-jupyter
28+
tags: |
29+
type=raw,value=latest
30+
- name: Build and push Docker image
31+
uses: docker/build-push-action@v5
32+
with:
33+
push: true
34+
tags: ${{ steps.meta.outputs.tags }}
35+
labels: ${{ steps.meta.outputs.labels }}

Dockerfile

Lines changed: 16 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,26 @@
1-
FROM ubuntu:focal
1+
FROM ghcr.io/yitzchak/archlinux-cl:latest
22

3-
SHELL ["/bin/bash", "-c"]
3+
RUN sudo pacman -Syu --noconfirm jupyterlab jupyter-console jupyterlab-widgets
44

5-
ARG NB_USER=jovyan
6-
ARG NB_UID=1000
5+
COPY . /home/root/quicklisp/local-projects/common-lisp-jupyter
76

8-
ENV CCL_VERSION "1.12.1-1"
9-
ENV LLVM_VERSION "13.r5140.g972b6a3a3471-1"
10-
ENV CLASP_VERSION "0.4.2.r4473.g7ba57bd76-1"
11-
ENV DEBIAN_FRONTEND=noninteractive
12-
ENV USER ${NB_USER}
13-
ENV HOME /home/${NB_USER}
14-
ENV PATH "${HOME}/.local/bin:${HOME}/miniconda/bin/:${PATH}"
15-
16-
RUN dpkg --add-architecture i386 && \
17-
apt-get update && \
18-
apt-get dist-upgrade -y && \
19-
apt-get install -y wget curl jq gpg git ssh sudo nano gettext locales sbcl \
20-
ecl libzmq3-dev libzmq3-dev:i386 lsb-release && \
21-
echo 'en_US.UTF-8 UTF-8' >/etc/locale.gen && \
22-
sudo locale-gen
23-
24-
RUN wget https://github.com/yitzchak/mpr/releases/download/ccl_${CCL_VERSION}/ccl_${CCL_VERSION}_amd64_ubuntu_focal.deb && \
25-
wget https://github.com/yitzchak/mpr/releases/download/llvm13_${LLVM_VERSION}/llvm13_${LLVM_VERSION}_amd64_ubuntu_focal.deb && \
26-
wget https://github.com/yitzchak/mpr/releases/download/clasp-cl-git_${CLASP_VERSION}/clasp-cl-git_${CLASP_VERSION}_amd64_ubuntu_focal.deb && \
27-
apt-get install -y ./ccl_${CCL_VERSION}_amd64_ubuntu_focal.deb \
28-
./llvm13_${LLVM_VERSION}_amd64_ubuntu_focal.deb \
29-
./clasp-cl-git_${CLASP_VERSION}_amd64_ubuntu_focal.deb && \
30-
rm ccl_${CCL_VERSION}_amd64_ubuntu_focal.deb \
31-
llvm13_${LLVM_VERSION}_amd64_ubuntu_focal.deb \
32-
clasp-cl-git_${CLASP_VERSION}_amd64_ubuntu_focal.deb
33-
34-
RUN useradd --create-home --shell=/bin/false --uid=${NB_UID} ${NB_USER} && \
35-
usermod -aG sudo $NB_USER && \
36-
passwd -d $NB_USER
37-
38-
WORKDIR ${HOME}
39-
40-
USER ${NB_USER}
41-
42-
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-py39_4.9.2-Linux-x86_64.sh && \
43-
bash Miniconda3-py39_4.9.2-Linux-x86_64.sh -b -p $HOME/miniconda && \
44-
./miniconda/bin/conda init && \
45-
rm Miniconda3-py39_4.9.2-Linux-x86_64.sh
46-
47-
RUN conda install -c conda-forge nodejs jupyterlab jupyter_console
48-
49-
RUN jupyter serverextension enable --user --py jupyterlab; \
50-
jupyter labextension install @jupyter-widgets/jupyterlab-manager \
51-
jupyterlab-edit-magic cytoscape-clj kekule-clj resizable-box-clj \
52-
ngl-clj jupyterlab-debugger-restarts; \
53-
jupyter nbextension enable --user --py widgetsnbextension; \
54-
jupyter lab build; \
55-
curl -kLO https://beta.quicklisp.org/quicklisp.lisp; \
56-
sbcl --non-interactive --load quicklisp.lisp \
57-
--eval "(quicklisp-quickstart:install)" \
58-
--eval "(ql-util:without-prompting (ql:add-to-init-file))"; \
59-
ccl --load quicklisp/setup.lisp \
60-
--eval "(ql-util:without-prompting (ql:add-to-init-file))" \
61-
--eval "(uiop:quit)"; \
62-
iclasp-boehmprecise --non-interactive --load quicklisp/setup.lisp \
63-
--eval "(ql-util:without-prompting (ql:add-to-init-file))"; \
64-
ecl --load quicklisp/setup.lisp \
65-
--eval "(ql-util:without-prompting (ql:add-to-init-file))" \
66-
--eval "(uiop:quit)"
67-
68-
USER root
69-
COPY . ${HOME}/quicklisp/local-projects/common-lisp-jupyter
70-
RUN chown -R ${NB_UID} quicklisp/local-projects/common-lisp-jupyter && \
71-
chgrp -R ${NB_USER} quicklisp/local-projects/common-lisp-jupyter
72-
73-
USER ${NB_USER}
74-
RUN git clone https://github.com/yitzchak/shasht.git ~/quicklisp/local-projects/shasht; \
75-
git clone https://github.com/yitzchak/cytoscape-clj.git ~/quicklisp/local-projects/cytoscape-clj; \
76-
mv ~/quicklisp/local-projects/common-lisp-jupyter/examples ~/lab; \
77-
mv ~/quicklisp/local-projects/cytoscape-clj/examples ~/lab/cytoscape-clj; \
78-
git clone https://github.com/yitzchak/kekule-clj.git ~/quicklisp/local-projects/kekule-clj; \
79-
mv ~/quicklisp/local-projects/kekule-clj/examples ~/lab/kekule-clj; \
7+
RUN git clone https://github.com/yitzchak/delta-vega.git ~/quicklisp/local-projects/delta-vega; \
808
git clone https://github.com/yitzchak/resizable-box-clj.git ~/quicklisp/local-projects/resizable-box-clj; \
819
git clone https://github.com/yitzchak/ngl-clj.git ~/quicklisp/local-projects/ngl-clj; \
82-
mv ~/quicklisp/local-projects/ngl-clj/examples ~/lab/ngl-clj; \
8310
sbcl --non-interactive \
84-
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj))" \
85-
--eval "(clj:install :use-implementation t)"; \
11+
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj :delta-vega))" \
12+
--eval "(clj:install :implementation t)"; \
13+
abcl --batch \
14+
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj :delta-vega))" \
15+
--eval "(clj:install :implementation t)"; \
8616
ccl \
87-
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj))" \
88-
--eval "(clj:install :use-implementation t)" \
17+
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj :delta-vega))" \
18+
--eval "(clj:install :implementation t)"; \
8919
--eval "(uiop:quit)"; \
90-
iclasp-boehmprecise --non-interactive \
91-
--eval "(ql:quickload :common-lisp-jupyter)" \
92-
--eval "(clj:install :use-implementation t)"; \
93-
iclasp-boehmprecise --non-interactive \
94-
--eval "(ql:quickload '(:cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj))"; \
20+
clasp --non-interactive \
21+
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj :delta-vega))" \
22+
--eval "(clj:install :implementation t)"; \
9523
ecl \
96-
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj))" \
97-
--eval "(clj:install :use-implementation t)" \
24+
--eval "(ql:quickload '(:common-lisp-jupyter :cytoscape-clj :kekule-clj :resizable-box-clj :ngl-clj :delta-vega))" \
25+
--eval "(clj:install :implementation t)"; \
9826
--eval "(uiop:quit)"
99-
100-
WORKDIR ${HOME}/lab
101-

0 commit comments

Comments
 (0)