kopia lustrzana https://github.com/Hamlib/Hamlib
Merge pull request #1639 from 8r4n/feature/multi-stage-docker-build
Added multi-stage Docker build and hamlib-runtime imagepull/1640/head
commit
6bb5c40499
|
@ -1,21 +1,26 @@
|
|||
# Idea from https://github.com/ok2cqr/cqrlog
|
||||
# Base Image
|
||||
FROM ubuntu:latest AS hamlib-base-image
|
||||
|
||||
FROM ubuntu:latest
|
||||
ENV DEBIAN_FRONTEND="noninteractive" TZ="Etc/UTC"
|
||||
|
||||
RUN apt-get update && apt-get -y upgrade
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y vim git build-essential automake libtool python-is-python3 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENV DEBIAN_FRONTEND="noninteractive" TZ="Europe/London"
|
||||
# Builder Image
|
||||
|
||||
RUN apt-get install -y git build-essential automake libtool
|
||||
FROM hamlib-base-image AS hamlib-builder
|
||||
|
||||
RUN mkdir -p /usr/local/hamlib-alpha /home/hamlib/build
|
||||
COPY . /wip
|
||||
|
||||
# Mount point for the git repository:
|
||||
VOLUME ["/home/hamlib/build"]
|
||||
WORKDIR /wip
|
||||
|
||||
# Mount point for the result of the build:
|
||||
VOLUME ["/usr/local/hamlib-alpha"]
|
||||
RUN ./bootstrap && ./configure --prefix=/usr/local \
|
||||
&& make clean && make -j${nproc} && make install
|
||||
|
||||
WORKDIR /home/hamlib/build
|
||||
# Runtime Image
|
||||
FROM ubuntu:latest AS hamlib-runtime
|
||||
|
||||
ENTRYPOINT rm -rf build && mkdir -p build && cd build && ../bootstrap && ../configure --prefix=/usr/local/hamlib-alpha && make clean && make && make install
|
||||
COPY --from=hamlib-builder /usr/local /usr/local
|
||||
|
||||
ENV LD_LIBRARY_PATH="/usr/local/lib"
|
||||
|
|
|
@ -0,0 +1,71 @@
|
|||
|
||||
# Build the hamlib-runtime from the repository root
|
||||
|
||||
```
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
--target hamlib-runtime \
|
||||
-t hamlib-runtime \
|
||||
-f docker-build/Dockerfile \
|
||||
.
|
||||
```
|
||||
|
||||
# Interactively, develop with the hamlib-base-image
|
||||
|
||||
|
||||
## Support the linux/amd64 and linux/arm64 platforms
|
||||
```
|
||||
docker buildx build \
|
||||
--platform linux/amd64,linux/arm64 \
|
||||
--target hamlib-base-image \
|
||||
-t hamlib-base-image \
|
||||
-f docker-build/Dockerfile \
|
||||
.
|
||||
```
|
||||
|
||||
## Develop on the linux/amd64 hamlib-base-image
|
||||
|
||||
```
|
||||
docker run \
|
||||
-it \
|
||||
--rm \
|
||||
--platform linux/amd64 \
|
||||
-v $(pwd):/wip \
|
||||
-w /wip \
|
||||
-u $(id -u):$(id -g) \
|
||||
hamlib-base-image bash
|
||||
```
|
||||
|
||||
...or the linux/arm64 hamlib-base-image
|
||||
|
||||
```
|
||||
docker run \
|
||||
-it \
|
||||
--rm \
|
||||
--platform linux/arm64 \
|
||||
-v $(pwd):/wip \
|
||||
-w /wip \
|
||||
-u $(id -u):$(id -g) \
|
||||
hamlib-base-image bash
|
||||
```
|
||||
|
||||
# Run the linux/amd64 hamlib-runtime
|
||||
|
||||
```
|
||||
docker run \
|
||||
-it \
|
||||
--rm \
|
||||
--platform linux/amd64 \
|
||||
hamlib-runtime bash
|
||||
```
|
||||
|
||||
...or the linux/arm64 hamlib-runtime
|
||||
|
||||
```
|
||||
docker run \
|
||||
-it \
|
||||
--rm \
|
||||
--platform linux/arm64 \
|
||||
hamlib-runtime bash
|
||||
```
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
This is all about building hamlib inside docker container - so that you do not need to install dependencies on your local machine.
|
||||
|
||||
1. Build docker container
|
||||
|
||||
(cd docker-build && docker build --no-cache -t this.registry.is.invalid/hamlib-build .)
|
||||
|
||||
2. Build hamlib
|
||||
|
||||
docker run -ti -u root -v $(pwd):/home/hamlib/build -v /usr/local/hamlib-alpha:/usr/local/hamlib-alpha this.registry.is.invalid/hamlib-build
|
||||
|
||||
3. Execute hamlib
|
||||
|
||||
/usr/local/hamlib-alpha/bin/rigctl <your options here>
|
Ładowanie…
Reference in New Issue