Skip to content

Commit

Permalink
Add docker build
Browse files Browse the repository at this point in the history
  • Loading branch information
ngoduykhanh committed Apr 24, 2020
1 parent a5fbb7b commit b12feb0
Show file tree
Hide file tree
Showing 9 changed files with 6,629 additions and 7 deletions.
25 changes: 25 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Node
node_modules
npm-debug.log

# Docker
Dockerfile*
docker-compose*
.dockerignore

# Git
.git
.gitattributes
.gitignore

# Vscode
.vscode
*.code-workspace

# Others
.lgtm.yml
.travis.yml

# App data & bin
db
wireguard-ui
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,4 @@ wireguard-ui
# Dependency directories (remove the comment below to include it)
vendor/
assets/


node_modules
61 changes: 61 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Build stage
FROM golang:1.14.2-alpine3.11 as builder
LABEL maintainer="Khanh Ngo <[email protected]"
ARG BUILD_DEPENDENCIES="npm \
yarn"

# Get dependencies
RUN apk add --update --no-cache ${BUILD_DEPENDENCIES}

WORKDIR /build

# Add sources
COPY . /build

# Get application dependencies and build
RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o wg-ui .

# Prepare assets
RUN yarn install --pure-lockfile --production && \
yarn cache clean

# Move plugin assets
RUN mkdir -p /assets/plugins && \
cp -r /build/node_modules/admin-lte/plugins/jquery/ \
/build/node_modules/admin-lte/plugins/fontawesome-free/ \
/build/node_modules/admin-lte/plugins/bootstrap/ \
/build/node_modules/admin-lte/plugins/icheck-bootstrap/ \
/build/node_modules/admin-lte/plugins/toastr/ \
/build/node_modules/admin-lte/plugins/jquery-validation/ \
/build/node_modules/admin-lte/plugins/select2/ \
/build/node_modules/jquery-tags-input/ \
/assets/plugins/


# Release stage
FROM golang:1.14.2-alpine3.11

RUN addgroup -S wgui && \
adduser -S -D -G wgui wgui

RUN apk --no-cache add ca-certificates

WORKDIR /app

RUN mkdir -p db

# Copy binary files
COPY --from=builder --chown=wgui:wgui /build/wg-ui /app
# Copy templates
COPY --from=builder --chown=wgui:wgui /build/templates /app/templates
# Copy assets
COPY --from=builder --chown=wgui:wgui /build/node_modules/admin-lte/dist/js/adminlte.min.js /app/assets/dist/js/adminlte.min.js
COPY --from=builder --chown=wgui:wgui /build/node_modules/admin-lte/dist/css/adminlte.min.css /app/assets/dist/css/adminlte.min.css
COPY --from=builder --chown=wgui:wgui /assets/plugins /app/assets/plugins

RUN chmod +x wg-ui

EXPOSE 5000/tcp
HEALTHCHECK CMD ["wget","--output-document=-","--quiet","--tries=1","http://127.0.0.1:5000/"]
ENTRYPOINT ["./wg-ui"]
13 changes: 13 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
version: '3'

services:
wg:
# image: ngoduykhanh/wireguard-ui:latest
image: wgui
container_name: wgui
ports:
- 5000:5000
logging:
driver: json-file
options:
max-size: 50m
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,5 @@ func main() {
app.GET("/api/machine-ips", handler.MachineIPAddresses())
app.GET("/api/suggest-client-ips", handler.SuggestIPAllocation())
app.GET("/api/apply-wg-config", handler.ApplyServerConfig())
app.Logger.Fatal(app.Start("127.0.0.1:5000"))
app.Logger.Fatal(app.Start("0.0.0.0:5000"))
}
Loading

0 comments on commit b12feb0

Please sign in to comment.