Adjust dockerfile

This commit is contained in:
Khanh Ngo 2020-05-21 14:19:10 +07:00
parent af16649b3f
commit d428bfe6f4
No known key found for this signature in database
GPG key ID: D5FAA6A16150E49E
3 changed files with 46 additions and 12 deletions

View file

@ -12,14 +12,17 @@ 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 admin-lte dist
RUN mkdir -p assets/dist/js assets/dist/css && \
cp /build/node_modules/admin-lte/dist/js/adminlte.min.js \
assets/dist/js/adminlte.min.js && \
cp /build/node_modules/admin-lte/dist/css/adminlte.min.css \
assets/dist/css/adminlte.min.css
# Move plugin assets
RUN mkdir -p /assets/plugins && \
cp -r /build/node_modules/admin-lte/plugins/jquery/ \
@ -30,8 +33,15 @@ RUN mkdir -p /assets/plugins && \
/build/node_modules/admin-lte/plugins/jquery-validation/ \
/build/node_modules/admin-lte/plugins/select2/ \
/build/node_modules/jquery-tags-input/ \
/assets/plugins/
assets/plugins/
# Get go modules and build tool
RUN go mod download && \
go get github.com/GeertJohan/go.rice/rice
# Build
RUN rice embed-go && \
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o wg-ui .
# Release stage
FROM alpine:3.11
@ -47,12 +57,6 @@ 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

View file

@ -73,7 +73,13 @@ docker build -t wireguard-ui .
### Build binary file
You can embed resources by generating Go source code
Prepare the assets directory
```
./prepare_assets.sh
```
Then you can embed resources by generating Go source code
```
rice embed-go

24
prepare_assets.sh Executable file
View file

@ -0,0 +1,24 @@
#!/usr/bin/env bash
set -e
DIR=$(dirname "$0")
# install node modules
yarn install --pure-lockfile --production
# Copy admin-lte dist
mkdir -p "${DIR}/assets/dist/js" "${DIR}/assets/dist/css" && \
cp -r "${DIR}/node_modules/admin-lte/dist/js/adminlte.min.js" "${DIR}/assets/dist/js/adminlte.min.js" && \
cp -r "${DIR}/node_modules/admin-lte/dist/css/adminlte.min.css" "${DIR}/assets/dist/css/adminlte.min.css"
# Copy plugins
mkdir -p "${DIR}/assets/plugins" && \
cp -r "${DIR}/node_modules/admin-lte/plugins/jquery" \
"${DIR}/node_modules/admin-lte/plugins/fontawesome-free" \
"${DIR}/node_modules/admin-lte/plugins/bootstrap" \
"${DIR}/node_modules/admin-lte/plugins/icheck-bootstrap" \
"${DIR}/node_modules/admin-lte/plugins/toastr" \
"${DIR}/node_modules/admin-lte/plugins/jquery-validation" \
"${DIR}/node_modules/admin-lte/plugins/select2" \
"${DIR}/node_modules/jquery-tags-input" \
"${DIR}/assets/plugins/"