Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1319 from benjaoming/dockerize
Supplemental development process for Docker
- Loading branch information
Showing
6 changed files
with
154 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# This implicitely includes Python 3.10 | ||
FROM node:14-alpine | ||
|
||
# Do not use --update since that will also fetch the | ||
# latest node-current package | ||
# 'make' is needed for building documentation | ||
RUN apk add npm make py3-pip py3-wheel | ||
|
||
# Add an extra verification that we have the right node | ||
# because the above caused issues | ||
RUN node -v && node -v | grep -q v14 &&\ | ||
python3 --version && python3 --version | grep -q "3.10" | ||
|
||
RUN pip install pip --upgrade | ||
|
||
RUN mkdir -p /project/src/ &&\ | ||
mkdir -p /project/docs/build/ &&\ | ||
mkdir -p /project-minimal-copy/sphinx_rtd_theme &&\ | ||
touch /project-minimal-copy/sphinx_rtd_theme/__init__.py | ||
|
||
# This is the main working directory where node_modules | ||
# gets built. During runtime, it's mixed with directories | ||
# from an external environment through a bind mount | ||
WORKDIR /project | ||
|
||
# Copy files necessary to run "npm install" and save | ||
# installed packages in the docker image (makes the runtime | ||
# so much faster) | ||
COPY package.json /project/ | ||
COPY bin/preinstall.js /project/bin/preinstall.js | ||
|
||
RUN cd /project | ||
|
||
# It matters that the node environment is installed into the same | ||
# folder, i.e. /project where we will run the environment from | ||
RUN npm install --package-lock-only &&\ | ||
npm audit fix &&\ | ||
npm install | ||
|
||
# This is strictly speaking not necessary, just makes | ||
# running the container faster... | ||
# Install dependencies, then uninstall project itself | ||
COPY setup.py README.rst /project-minimal-copy/ | ||
RUN cd /project-minimal-copy &&\ | ||
pip install ".[dev]" &&\ | ||
/usr/bin/yes | pip uninstall sphinx_rtd_theme | ||
|
||
|
||
# Copy in files that we need to run the project. These files | ||
# will not be mounted into the runtime from external environment | ||
# so we copy them during build. | ||
COPY webpack.common.js webpack.dev.js webpack.prod.js /project/ | ||
|
||
# Copy in the entrypoint and we're done | ||
COPY docker-entrypoint.sh /entrypoint.sh | ||
RUN chmod +x /entrypoint.sh | ||
|
||
ENTRYPOINT ["/entrypoint.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
SHELL := /bin/bash | ||
CWD := $(shell cd -P -- '$(shell dirname -- "$0")' && pwd -P) | ||
|
||
docker-images: | ||
docker-compose build | ||
|
||
docker-npm-build: | ||
rm -f .container_id | ||
docker-compose run -d sphinx_rtd_theme build > .container_id | ||
docker container wait "$(shell cat .container_id)" | ||
docker cp "$(shell cat .container_id):/project/sphinx_rtd_theme" . | ||
docker cp "$(shell cat .container_id):/project/package-lock.json" . | ||
@echo "Done building" | ||
|
||
docker-npm-dev: | ||
docker-compose run sphinx_rtd_theme dev | ||
|
||
docker-build-all: docker-images docker-npm-build |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
version: "3.2" | ||
services: | ||
|
||
sphinx_rtd_theme: | ||
build: . | ||
volumes: | ||
- type: "bind" | ||
source: "./" | ||
target: "/project-readonly" | ||
read_only: true | ||
- type: "volume" | ||
target: "/project-readonly/sphinx_rtd_theme.egg-info" | ||
- type: "bind" | ||
source: "./src" | ||
target: "/project/src" | ||
read_only: true | ||
- type: "bind" | ||
source: "./docs" | ||
target: "/project/docs" | ||
read_only: false #todo: fix this | ||
- type: "volume" | ||
target: "/project/docs/_build" | ||
|
||
network_mode: host | ||
ports: | ||
- "1919:1919" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
#!/bin/sh | ||
|
||
# Update latest Python dependencies in case they have changed | ||
cd /project-readonly | ||
pip install --upgrade -e ".[dev]" | ||
|
||
# This helps a potential permission issue, but might be removed | ||
# pending some more investigation of docker host file system | ||
# permissions in the bind mount | ||
# npm cache clean --force | ||
# npm install | ||
|
||
cd /project | ||
cp -r /project-readonly/sphinx_rtd_theme . | ||
|
||
echo "Going to invoke: npm run $@" | ||
npm run $@ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters