mirror of
https://github.com/edubart/otclient.git
synced 2025-04-29 09:19:19 +02:00
Improved Docker support
This commit is contained in:
parent
caae18dbce
commit
0f69f11b78
2
.dockerignore
Normal file
2
.dockerignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/build/
|
||||||
|
Dockerfile
|
58
Dockerfile
58
Dockerfile
@ -1,31 +1,51 @@
|
|||||||
from ubuntu:latest
|
FROM ubuntu@sha256:b88f8848e9a1a4e4558ba7cfc4acc5879e1d0e7ac06401409062ad2627e6fb58 AS builder
|
||||||
|
|
||||||
WORKDIR /app
|
RUN apt-get update; \
|
||||||
|
apt-get install -y \
|
||||||
RUN apt-get update; apt-get install -y \
|
|
||||||
build-essential \
|
build-essential \
|
||||||
cmake \
|
cmake \
|
||||||
git-core \
|
git-core \
|
||||||
libboost-all-dev \
|
libboost-atomic1.65-dev \
|
||||||
|
libboost-chrono1.65-dev \
|
||||||
|
libboost-date-time1.65-dev \
|
||||||
|
libboost-filesystem1.65-dev \
|
||||||
|
libboost-system1.65-dev \
|
||||||
|
libboost-thread1.65-dev \
|
||||||
libglew-dev \
|
libglew-dev \
|
||||||
liblua5.1-0-dev \
|
liblua5.1-0-dev \
|
||||||
|
libncurses5-dev \
|
||||||
libopenal-dev \
|
libopenal-dev \
|
||||||
libphysfs-dev \
|
|
||||||
libssl-dev \
|
libssl-dev \
|
||||||
libvorbis-dev \
|
libvorbis-dev \
|
||||||
zlib1g-dev
|
mercurial \
|
||||||
|
zlib1g-dev; \
|
||||||
|
apt-get clean && apt-get autoclean
|
||||||
|
|
||||||
RUN apt-get install -y \
|
WORKDIR /
|
||||||
libncurses5-dev \
|
RUN hg clone -r stable-2.0 http://hg.icculus.org/icculus/physfs/
|
||||||
mercurial; \
|
WORKDIR /physfs/build/
|
||||||
hg clone -r stable-2.0 http://hg.icculus.org/icculus/physfs/; \
|
RUN cmake ..
|
||||||
cd physfs; \
|
RUN make -j$(grep -c ^process /proc/cpuinfo)
|
||||||
mkdir build && cd build && cmake .. && make && make install; \
|
RUN make install
|
||||||
mv /usr/local/lib/libphysfs.a /usr/lib/x86_64-linux-gnu/.
|
RUN mv /usr/local/lib/libphysfs.a /usr/lib/x86_64-linux-gnu/.
|
||||||
|
|
||||||
ADD . /app
|
COPY ./src/ /otclient/src/.
|
||||||
|
COPY CMakeLists.txt /otclient/.
|
||||||
|
WORKDIR /otclient/build/
|
||||||
|
RUN cmake -DCMAKE_CXX_LINK_FLAGS=-no-pie ..
|
||||||
|
RUN make -j$(grep -c ^process /proc/cpuinfo)
|
||||||
|
RUN strip --strip-unneeded otclient
|
||||||
|
|
||||||
# Build application
|
FROM ubuntu@sha256:b88f8848e9a1a4e4558ba7cfc4acc5879e1d0e7ac06401409062ad2627e6fb58
|
||||||
RUN mkdir -p build && cd build && cmake .. && make -j$(grep -c ^process /proc/cpuinfo);
|
RUN apt-get update; \
|
||||||
|
apt-get install -y \
|
||||||
CMD cd build; ./otclient
|
libglew2.0 \
|
||||||
|
libopenal1; \
|
||||||
|
apt-get clean && apt-get autoclean
|
||||||
|
COPY --from=builder /otclient/build/otclient /otclient/bin/otclient
|
||||||
|
COPY ./data/ /otclient/data/.
|
||||||
|
COPY ./mods/ /otclient/mods/.
|
||||||
|
COPY ./modules/ /otclient/modules/.
|
||||||
|
COPY ./init.lua /otclient/.
|
||||||
|
WORKDIR /otclient
|
||||||
|
CMD ["./bin/otclient"]
|
||||||
|
25
README.md
25
README.md
@ -38,13 +38,28 @@ In short, if you need to compile OTClient, follow these tutorials:
|
|||||||
|
|
||||||
### Build and run with Docker
|
### Build and run with Docker
|
||||||
|
|
||||||
To build and run the client:
|
To build the image:
|
||||||
```
|
|
||||||
./build.sh
|
```sh
|
||||||
./run.sh
|
docker build -t edubart/otclient .
|
||||||
```
|
```
|
||||||
|
|
||||||
The build step should be run just when something on implementation changes.
|
To run the built image:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Disable access control for the X server.
|
||||||
|
xhost +
|
||||||
|
|
||||||
|
# Run the container image with the required bindings to the host devices and volumes.
|
||||||
|
docker run -it --rm \
|
||||||
|
--env DISPLAY \
|
||||||
|
--volume /tmp/.X11-unix:/tmp/.X11-unix \
|
||||||
|
--device /dev/dri \
|
||||||
|
--device /dev/snd edubart/otclient /bin/bash
|
||||||
|
|
||||||
|
# Enable access control for the X server.
|
||||||
|
xhost -
|
||||||
|
```
|
||||||
|
|
||||||
### Need help?
|
### Need help?
|
||||||
|
|
||||||
|
19
run.sh
19
run.sh
@ -1,19 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
SE_enforcing=`getenforce` || true
|
|
||||||
|
|
||||||
sudo setenforce Permissive || true
|
|
||||||
|
|
||||||
# Enable any host to connect on X Org
|
|
||||||
xhost +
|
|
||||||
|
|
||||||
docker run -ti --rm \
|
|
||||||
-e DISPLAY \
|
|
||||||
-v /tmp/.X11-unix:/tmp/.X11-unix \
|
|
||||||
--device /dev/dri \
|
|
||||||
edubart/otclient
|
|
||||||
|
|
||||||
# Enable any host to connect on X Org
|
|
||||||
xhost -
|
|
||||||
|
|
||||||
sudo setenforce $SE_enforcing || true
|
|
Loading…
x
Reference in New Issue
Block a user