[GH-124] Added Docker Arm64 Capability (#1700)

* Added Docker Arm64 Capability
pull/3909/head^2
Genei180 2 years ago committed by GitHub
parent 9f344382ce
commit a8bafb35c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      .dockerignore
  2. 5
      Makefile
  3. 12
      docker/Dockerfile
  4. 11
      docker/README.md

@ -1,6 +1,7 @@
CHANGELOG.md
README.md
node_modules
.github/
mac/
win-wpf/

@ -65,6 +65,11 @@ server-linux: setup-go-work ## Build server for Linux.
$(eval LDFLAGS += -X "github.com/mattermost/focalboard/server/model.Edition=linux")
cd server; env GOOS=linux GOARCH=amd64 go build -ldflags '$(LDFLAGS)' -tags '$(BUILD_TAGS)' -o ../bin/linux/focalboard-server ./main
server-docker: setup-go-work ## Build server for Docker Architectures.
mkdir -p bin/docker
$(eval LDFLAGS += -X "github.com/mattermost/focalboard/server/model.Edition=linux")
cd server; env GOOS=$(os) GOARCH=$(arch) go build -ldflags '$(LDFLAGS)' -tags '$(BUILD_TAGS)' -o ../bin/docker/focalboard-server ./main
server-win: setup-go-work ## Build server for Windows.
$(eval LDFLAGS += -X "github.com/mattermost/focalboard/server/model.Edition=win")
cd server; env GOOS=windows GOARCH=amd64 go build -ldflags '$(LDFLAGS)' -tags '$(BUILD_TAGS)' -o ../bin/win/focalboard-server.exe ./main

@ -4,7 +4,9 @@ FROM node:16.3.0@sha256:ca6daf1543242acb0ca59ff425509eab7defb9452f6ae07c156893db
WORKDIR /webapp
ADD webapp/ /webapp
RUN npm install --no-optional && \
### 'CPPFLAGS="-DPNG_ARM_NEON_OPT=0"' Needed To Avoid Bug Described in: https://github.com/imagemin/optipng-bin/issues/118#issuecomment-1019838562
### Can be Removed when Ticket will be Closed
RUN CPPFLAGS="-DPNG_ARM_NEON_OPT=0" npm install --no-optional && \
npm run pack
### Go build
@ -13,7 +15,11 @@ FROM golang:1.18.3@sha256:b203dc573d81da7b3176264bfa447bd7c10c9347689be405403818
WORKDIR /go/src/focalboard
ADD . /go/src/focalboard
RUN EXCLUDE_PLUGIN=true EXCLUDE_SERVER=true EXCLUDE_ENTERPRISE=true make server-linux
# Get target architecture
ARG TARGETOS
ARG TARGETARCH
RUN EXCLUDE_PLUGIN=true EXCLUDE_SERVER=true EXCLUDE_ENTERPRISE=true make server-docker os=${TARGETOS} arch=${TARGETARCH}
## Final image
FROM debian:buster-slim@sha256:5b0b1a9a54651bbe9d4d3ee96bbda2b2a1da3d2fa198ddebbced46dfdca7f216
@ -24,7 +30,7 @@ RUN chown -R nobody:nogroup /opt/focalboard
WORKDIR /opt/focalboard
COPY --from=nodebuild --chown=nobody:nogroup /webapp/pack pack/
COPY --from=gobuild --chown=nobody:nogroup /go/src/focalboard/bin/linux/focalboard-server bin/
COPY --from=gobuild --chown=nobody:nogroup /go/src/focalboard/bin/docker/focalboard-server bin/
COPY --from=gobuild --chown=nobody:nogroup /go/src/focalboard/LICENSE.txt LICENSE.txt
COPY --from=gobuild --chown=nobody:nogroup /go/src/focalboard/docker/server_config.json config.json

@ -2,7 +2,7 @@
## Docker
The Dockerfile gives a quick and easy way to pull the latest Focalboard server and deploy it locally. In the example below,
The Dockerfile gives a quick and easy way to build the latest Focalboard server and deploy it locally. In the example below,
the Focalboard database and files will be persisted in a named volumed called `fbdata`.
From the Focalboard project root directory:
@ -14,6 +14,15 @@ docker run -it -v "fbdata:/opt/focalboard/data" -p 80:8000 focalboard
Open a browser to [localhost](http://localhost) to start
## Alternative architectures
From the Focalboard project root directory:
```bash
docker build -f docker/Dockerfile --platform linux/arm64 -t focalboard .
docker run -it -v "fbdata:/opt/focalboard/data" -p 80:8000 focalboard
```
## Docker-Compose
Docker-Compose provides the option to automate the build and run step, or even include some of the steps from the [personal server setup](https://www.focalboard.com/download/personal-edition/ubuntu/).

Loading…
Cancel
Save