diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 9323e6e6..4bafe0d7 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -58,6 +58,7 @@ jobs: file: ./frontend/Dockerfile platforms: linux/amd64,linux/arm64 push: true + target: production tags: hexastack/hexabot-ui:latest - name: Build and push API Docker image diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 98c7912e..afa04d2f 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -41,7 +41,10 @@ services: build: context: ../ dockerfile: ./frontend/Dockerfile + target: development pull_policy: build + volumes: + - ../frontend/:/app/frontend/ widget: build: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index d8d812c6..3431aeb6 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -41,11 +41,29 @@ RUN \ else echo "Lockfile not found." && exit 1; \ fi -# Production image, copy all the files and run next -FROM base AS runner +FROM base AS development + +WORKDIR /app + +COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./ + +COPY . . + +RUN npm install + +ENV NODE_ENV=development +ENV CHOKIDAR_USEPOLLING=true +ENV WATCHPACK_POLLING=true + WORKDIR /app/frontend -ENV NODE_ENV production +CMD ["npm", "run", "dev", "--", "-p", "8080"] + +# Production image, copy all the files and run next +FROM base AS production +WORKDIR /app/frontend + +ENV NODE_ENV=production # Uncomment the following line in case you want to disable telemetry during runtime. ENV NEXT_TELEMETRY_DISABLED 1 diff --git a/frontend/next.config.mjs b/frontend/next.config.mjs index 6d0080df..25dc2f7b 100644 --- a/frontend/next.config.mjs +++ b/frontend/next.config.mjs @@ -10,7 +10,14 @@ const nextConfig = withTM(["hexabot-widget"])({ }, ]; }, - webpack(config, _options) { + webpack(config) { + if (process.env.NODE_ENV==="development") { + config.watchOptions = { + poll: 1000, + aggregateTimeout: 300, + }; + } + return config; }, publicRuntimeConfig: {