booplaysgba/Dockerfile

60 lines
1.6 KiB
Docker
Raw Normal View History

2021-11-09 17:19:55 +00:00
FROM python:alpine AS base
2021-11-09 23:20:00 +00:00
# set /code as the work directory
2021-11-09 17:19:55 +00:00
WORKDIR /code
RUN \
# update alpine repositories
apk update \
# build tools dependencies
&& apk add build-base cmake git \
# mgba dependencies
2021-11-09 19:56:57 +00:00
&& apk add libffi-dev elfutils-dev libzip-tools minizip-dev libedit-dev sqlite-dev libepoxy-dev ffmpeg ffmpeg-dev libpng-dev jpeg-dev \
2021-11-09 17:19:55 +00:00
# install poetry and cffi deps for mgba
&& pip install poetry cffi
2021-11-09 19:56:57 +00:00
# copy poetry config files
2021-11-09 23:20:00 +00:00
COPY ./pyproject.toml /code
2021-11-09 19:56:57 +00:00
2021-11-09 17:19:55 +00:00
RUN \
cd /code \
# clone mgba
&& git clone https://github.com/mgba-emu/mgba.git mgba \
# create build directory
&& mkdir mgba/build \
# go to the build directory
&& cd mgba/build \
# configure the build
2021-11-09 19:56:57 +00:00
&& cmake -DBUILD_PYTHON=ON -DBUILD_QT=OFF -DBUILD_SDL=OFF -DUSE_DISCORD_RPC=OFF -DCMAKE_INSTALL_PREFIX:PATH=/usr/local .. \
2021-11-09 17:19:55 +00:00
# build mGBA
2021-11-09 19:56:57 +00:00
&& make \
2021-11-09 23:20:00 +00:00
# install mGBA
&& make install
2021-11-09 17:19:55 +00:00
2021-11-09 23:20:00 +00:00
RUN \
cd /code/mgba/src/platform/python \
# install mGBA bindings
&& BINDIR=/code/mgba/build/include LIBDIR=/code/mgba/build/include python setup.py install
2021-11-09 17:19:55 +00:00
RUN \
# go to the workdir
cd /code/ \
2021-11-09 23:20:00 +00:00
# # config poetry to not create a .venv
2021-11-09 17:19:55 +00:00
&& poetry config virtualenvs.create false \
2021-11-09 23:20:00 +00:00
# # upgrade pip
2021-11-09 17:19:55 +00:00
&& poetry run pip install --upgrade pip \
# install poetry
2021-11-09 23:20:00 +00:00
&& poetry install --no-interaction --no-ansi --no-dev
2021-11-09 17:19:55 +00:00
# copy the src files
2021-11-09 23:20:00 +00:00
COPY ./src /code/src
2021-11-09 19:56:57 +00:00
COPY ./roms/pokemon.gba /code/roms/pokemon.gba
2021-11-09 23:20:00 +00:00
2021-11-09 17:19:55 +00:00
# create server image
FROM base as server
2021-11-09 23:20:00 +00:00
CMD [ "poetry", "run", "python", "/code/src/server.py" ]
2021-11-09 17:19:55 +00:00
# create emulator image
FROM base as emulator
2021-11-09 23:20:00 +00:00
CMD [ "poetry", "run", "python", "/code/src/emulator.py" ]