docker: fix docker file image and apply some good practices (#552)

* docker: fix docker file image and apply some good practices

* update docker-compose
This commit is contained in:
Carlos Tadeu Panato Junior 2021-07-01 11:46:03 +02:00 committed by GitHub
parent 0811052a9b
commit 41d01c18fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 63 additions and 46 deletions

9
.dockerignore Normal file
View file

@ -0,0 +1,9 @@
CHANGELOG.md
README.md
.github/
mac/
win-wpf/
mattermost-plugin/
website/
linux/

View file

@ -7,7 +7,7 @@
# docker cp test:/dist/focalboard-server-linux-amd64.tar.gz .
# build frontend
FROM node:16.1.0 AS frontend
FROM node:16.3.0 AS frontend
WORKDIR /webapp
COPY webapp .
@ -16,7 +16,7 @@ RUN npm install --no-optional
RUN npm run pack
# build backend and package
FROM golang:1.16.4 AS backend
FROM golang:1.16.5 AS backend
COPY . .
COPY --from=frontend /webapp/pack webapp/pack

View file

@ -1,40 +1,36 @@
FROM golang:alpine as gobuild
### Webapp build
FROM node:16.3.0 as nodebuild
RUN apk update && \
apk add ca-certificates gcc git make musl-dev && \
git clone https://github.com/mattermost/focalboard && \
cd focalboard && \
make server-linux
WORKDIR /webapp
ADD webapp/ /webapp
FROM node:alpine as nodebuild
RUN npm install --no-optional && \
npm run pack
RUN apk update && \
apk add ca-certificates git && \
git clone https://github.com/mattermost/focalboard && \
cd focalboard/webapp && \
npm install && npm run pack
### Go build
FROM golang:1.16.5 as gobuild
FROM alpine:latest
WORKDIR /go/src/focalboard
ADD . /go/src/focalboard
ARG PUID=2000
ARG PGID=2000
RUN make server-linux
## Final image
FROM gcr.io/distroless/base-debian10
WORKDIR /opt/focalboard
COPY --from=nodebuild /webapp/pack pack/
COPY --from=gobuild /go/src/focalboard/bin/linux/focalboard-server bin/
COPY --from=gobuild /go/src/focalboard/LICENSE.txt LICENSE.txt
COPY --from=gobuild /go/src/focalboard/docker/server_config.json config.json
USER nobody
EXPOSE 8000/tcp
EXPOSE 8000/tcp 9092/tcp
VOLUME /data
RUN addgroup -g ${PGID} focalboard && \
adduser -H -D -u ${PUID} -G focalboard focalboard
WORKDIR /opt/focalboard
COPY --from=gobuild /go/focalboard/bin/linux/focalboard-server bin/
COPY --from=nodebuild /focalboard/webapp/pack pack/
COPY --from=nodebuild /focalboard/LICENSE.txt LICENSE.txt
COPY --from=nodebuild /focalboard/docker/server_config.json config.json
RUN chown -R ${PUID}:${PGID} /opt/focalboard
USER focalboard
CMD ["/opt/focalboard/bin/focalboard-server"]

View file

@ -1,30 +1,40 @@
version: "3"
services:
app:
build:
context: ./
context: ../
dockerfile: docker/Dockerfile
container_name: focalboard
depends_on:
- focalboard-db
expose:
- 8000
environment:
- VIRTUAL_HOST=focalboard.local
- VIRTUAL_HOST=localhost
- VIRTUAL_PORT=8000
- VIRTUAL_PROTO=http
volumes:
- "./config.json:/opt/focalboard/config.json"
restart: always
networks:
- proxy
- default
proxy:
image: jwilder/nginx-proxy:latest
container_name: focalboard-proxy
restart: always
ports:
- 443:443
- 80:80
volumes:
- "./certs:/etc/nginx/certs:ro"
- "/var/run/docker.sock:/tmp/docker.sock:ro"
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
- proxy
focalboard-db:
image: postgres:latest
restart: always
container_name: focalboard-postgres
restart: always
volumes:
@ -34,3 +44,5 @@ services:
POSTGRES_USER: boardsuser
POSTGRES_PASSWORD: boardsuser-password
networks:
proxy:

View file

@ -2,11 +2,11 @@ version: "3"
services:
app:
build:
context: ./
context: ../
dockerfile: docker/Dockerfile
container_name: focalboard
ports:
- 80:8000
environment:
- VIRTUAL_HOST=focalboard.local
- VIRTUAL_PORT=8000

View file

@ -1 +1 @@
v16.1.0
v16.3.0

View file

@ -2,18 +2,18 @@
This folder is used to manage the website at [focalboard.com](https://www.focalboard.com/). It was built using [Hugo](https://gohugo.io/).
- The main page for https://focalboard.com can be found at [/site/layouts/partials/hero.htm](site/layouts/partials).
- Other content can be found in the [/site/content](site/content) folder.
- The main page for https://focalboard.com can be found at [/site/layouts/partials/hero.htm](site/layouts/partials).
- Other content can be found in the [/site/content](site/content) folder.
## How to contribute
## How to contribute
You're welcome to submit pull requests for typos, minor corrects and additions, troubleshooting tips to install guides and other incremental improvements.
You're welcome to submit pull requests for typos, minor corrects and additions, troubleshooting tips to install guides and other incremental improvements.
For larger changes, such as adding an install guide for a different platform, please create a [feature request](https://github.com/mattermost/focalboard/issues/new?assignees=&labels=enhancement&template=enhancement.md&title=Feature+Request%3A+) ticket to discuss.
For larger changes, such as adding an install guide for a different platform, please create a [feature request](https://github.com/mattermost/focalboard/issues/new?assignees=&labels=enhancement&template=enhancement.md&title=Feature+Request%3A+) ticket to discuss.
## How to build locally
## How to build locally
If you're interested in building the website locally from this repo using Hugo, please use the following steps:
If you're interested in building the website locally from this repo using Hugo, please use the following steps:
1. Follow [Hugo documentation](https://gohugo.io/getting-started/installing/) to install Hugo