Skip to content

Commit a7825d6

Browse files
committed
Optimized Docker build
1 parent 3f608f2 commit a7825d6

19 files changed

+107
-42
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: New-Dev-Docker
2+
3+
on:
4+
workflow_dispatch:
5+
# push:
6+
# branches: [ "main" ]
7+
# paths:
8+
# - 'Dockerfile'
9+
# - 'src/**'
10+
11+
env:
12+
IMAGE_NAME: anyappstart
13+
14+
jobs:
15+
build:
16+
runs-on: ubuntu-latest
17+
18+
steps:
19+
- name: Checkout repository
20+
uses: actions/checkout@v4
21+
22+
- name: Set up QEMU
23+
uses: docker/setup-qemu-action@v3
24+
25+
- name: Set up Docker Buildx
26+
id: buildx
27+
uses: docker/setup-buildx-action@v3
28+
29+
- name: Login to GHCR
30+
uses: docker/login-action@v3
31+
with:
32+
registry: ghcr.io
33+
username: ${{ github.actor }}
34+
password: ${{ secrets.GITHUB_TOKEN }}
35+
36+
- name: Login to Docker Hub
37+
uses: docker/login-action@v3
38+
with:
39+
username: ${{ secrets.DOCKER_USERNAME }}
40+
password: ${{ secrets.DOCKER_PASSWORD }}
41+
42+
- name: Build and push
43+
uses: docker/build-push-action@v6
44+
with:
45+
context: .
46+
platforms: linux/amd64,linux/i386,linux/arm/v6,linux/arm/v7,linux/arm64
47+
push: true
48+
tags: |
49+
${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:dev
50+
ghcr.io/${{ secrets.DOCKER_USERNAME }}/${{ env.IMAGE_NAME }}:dev
51+
cache-from: type=gha
52+
cache-to: type=gha,mode=max

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ All notable changes to this project will be documented in this file.
44

55
## [0.1.4] - 2025-04-
66
### Added
7-
- User defined command
7+
- User defined command [#2](https://github.com/aceberg/AnyAppStart/issues/2)
88
- Variable `$ITEMNAME` now can be used in `SSH` too
99
- Vite config update
10+
- Optimized Docker build
1011

1112
## [0.1.3] - 2025-03-07
1213
### Added

Dockerfile

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,27 @@
1-
FROM golang:alpine AS builder
1+
FROM --platform=$BUILDPLATFORM tonistiigi/xx AS xx
22

3-
RUN apk add build-base
4-
COPY backend /src
5-
RUN cd /src/cmd/AnyAppStart/ && CGO_ENABLED=0 go build -o /AnyAppStart .
3+
FROM --platform=$BUILDPLATFORM golang:alpine AS builder
64

5+
COPY --from=xx / /
76

8-
FROM alpine:3
7+
WORKDIR /src
98

10-
RUN apk add --no-cache docker tzdata openssh
9+
COPY go.mod go.sum ./
10+
RUN go mod download
11+
12+
COPY . .
13+
14+
ARG TARGETPLATFORM
15+
RUN CGO_ENABLED=0 xx-go build -ldflags='-w -s' -o /AnyAppStart ./cmd/AnyAppStart
16+
17+
18+
FROM alpine
1119

1220
WORKDIR /app
21+
22+
RUN apk add --no-cache docker tzdata openssh \
23+
&& mkdir /data
24+
1325
COPY --from=builder /AnyAppStart /app/
1426

15-
ENTRYPOINT ["./AnyAppStart"]
27+
ENTRYPOINT ["./AnyAppStart"]

frontend/src/components/Body.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import { useEffect, useState } from "react"
2-
import ItemShow from "./ItemShow";
2+
import ItemShow from "./body/ItemShow";
33
import { filterItems, getGroupsList, sortItems } from "../functions/sortitems";
4-
import BodyTabs from "./BodyTabs";
4+
import BodyTabs from "./body/BodyTabs";
55
import { Item } from "../functions/exports";
66
import { observer } from "mobx-react-lite";
77
import mobxStore from "../functions/store";
8-
import BodyGroupFilter from "./BodyGroupFilter";
8+
import BodyGroupFilter from "./body/BodyGroupFilter";
99

1010
const Body: React.FC = observer(() => {
1111

frontend/src/components/Header.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useEffect, useState } from "react";
22
import { getConfig } from "../functions/api";
3-
import ConfigDropdown from "./ConfigDropdown";
4-
import TypesDropdown from "./TypesDropdown";
3+
import ConfigDropdown from "./header/ConfigDropdown";
4+
import TypesDropdown from "./header/TypesDropdown";
55
import mobxStore from "../functions/store";
66
import { observer } from "mobx-react-lite";
77
import { Conf } from "../functions/exports";

frontend/src/components/BodyGroupFilter.tsx renamed to frontend/src/components/body/BodyGroupFilter.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import mobxStore from "../functions/store";
1+
import mobxStore from "../../functions/store";
22

33
function BodyGroupFilter(_props: any) {
44

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useEffect } from "react";
2-
import mobxStore from "../functions/store";
3-
import { TypeStruct } from "../functions/exports";
2+
import mobxStore from "../../functions/store";
3+
import { TypeStruct } from "../../functions/exports";
44

55

66
function BodyTabs(_props: any) {
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { useState } from "react";
2-
import BootstrapModal from "./Modal";
3-
import { apiSaveItem } from "../functions/api";
4-
import mobxStore from "../functions/store";
5-
import { Item } from "../functions/exports";
6-
import { fetchItems } from "../functions/updstate";
2+
import BootstrapModal from "../Modal";
3+
import { apiSaveItem } from "../../functions/api";
4+
import mobxStore from "../../functions/store";
5+
import { Item } from "../../functions/exports";
6+
import { fetchItems } from "../../functions/updstate";
77

88
function EditItem(_props: any) {
99

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { apiExec } from "../functions/api";
1+
import { apiExec } from "../../functions/api";
22
import Logs from "./Logs";
33
import EditItem from "./EditItem";
4-
import { updItemState } from "../functions/updstate";
4+
import { updItemState } from "../../functions/updstate";
55
import toast, { Toaster } from 'react-hot-toast';
66
import UserCommand from "./UserCommand";
77

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useState } from "react";
2-
import { apiExec } from "../functions/api";
3-
import BootstrapModal from "./Modal";
2+
import { apiExec } from "../../functions/api";
3+
import BootstrapModal from "./../Modal";
44

55
function Logs(_props: any) {
66

0 commit comments

Comments
 (0)