diff --git a/.github/workflows/publish-docker.yaml b/.github/workflows/publish-docker.yaml new file mode 100644 index 0000000..b589eaf --- /dev/null +++ b/.github/workflows/publish-docker.yaml @@ -0,0 +1,43 @@ +name: Publish docker image + +# This workflow runs when any of the following occur: +# - A push is made to a branch called `main` +# - A tag starting with "v" is created +on: + push: + branches: + - main + tags: + - v* +env: + IMAGE_NAME: pagescms +jobs: + push: + runs-on: ubuntu-latest + permissions: + packages: write + contents: read + steps: + - uses: actions/checkout@v4 + + - name: Build image + run: docker build . --file Dockerfile --tag $IMAGE_NAME --label "runnumber=${GITHUB_RUN_ID}" + + - name: Log in to registry + run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin + - name: Push image + run: | + IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME + + # This changes all uppercase characters to lowercase. + IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]') + # This strips the git ref prefix from the version. + VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') + # This strips the "v" prefix from the tag name. + [[ "${{ github.ref }}" == "refs/tags/"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//') + # This uses the Docker `latest` tag convention. + [ "$VERSION" == "main" ] && VERSION=latest + echo IMAGE_ID=$IMAGE_ID + echo VERSION=$VERSION + docker tag $IMAGE_NAME $IMAGE_ID:$VERSION + docker push $IMAGE_ID:$VERSION diff --git a/.gitignore b/.gitignore index e9c8530..4595e39 100644 --- a/.gitignore +++ b/.gitignore @@ -12,8 +12,8 @@ dist dist-ssr coverage *.local -.* -!.dev.vars.example +*.vars + wrangler.toml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3932d2b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM node:20 + +WORKDIR /app + +COPY package.json package-lock.json postcss.config.js tailwind.config.js vite.config.js /app/ +RUN npm install + +COPY src /app/src +COPY public /app/public +COPY functions /app/functions +COPY index.html /app/ +COPY entrypoint.sh /app/ + +ENTRYPOINT /app/entrypoint.sh \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..e3ffb6f --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +services: + cms: + build: + context: . + dockerfile: Dockerfile + ports: + - "8788:8788" + - "5173:5173" + environment: + - GITHUB_CLIENT_ID=FILL_IN + - GITHUB_CLIENT_SECRET=FILL_IN \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000..cd2ede9 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,18 @@ +if [ -z "${GITHUB_CLIENT_ID-}" ]; then + echo "GITHUB_CLIENT_ID is missing. Exiting...." + exit 1 +fi +if [ -z "${GITHUB_CLIENT_SECRET-}" ]; then + echo "GITHUB_CLIENT_SECRET is missing. Exiting...." + exit 1 +fi + +BASE_URL="${BASE_URL:-http://localhost:8788}" + +CONFIG_FILE=".dev.vars" +touch $CONFIG_FILE +echo "BASE_URL = \"${BASE_URL}\"" > $CONFIG_FILE +echo "GITHUB_CLIENT_ID = \"${GITHUB_CLIENT_ID}\"" >> $CONFIG_FILE +echo "GITHUB_CLIENT_SECRET = \"${GITHUB_CLIENT_SECRET}\"" >> $CONFIG_FILE + +npm run dev \ No newline at end of file diff --git a/package.json b/package.json index 30eb39b..bdb6893 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "private": true, "type": "module", "scripts": { - "dev": "wrangler pages dev -- npm run vite", + "dev": "wrangler pages dev --proxy 5173 --ip 0.0.0.0 -- npm run vite", "vite": "vite", "build": "vite build", "preview": "vite preview" diff --git a/vite.config.js b/vite.config.js index 5c45e1d..4fe2d28 100644 --- a/vite.config.js +++ b/vite.config.js @@ -8,6 +8,9 @@ export default defineConfig({ plugins: [ vue(), ], + server: { + host: '0.0.0.0' + }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url))