diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f7ae35c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +node_modules/ +tijl.dev +tijldev +tijl.dev-core +config.yaml +blog/ +.git/ +.gitea/ +.data/ + diff --git a/.gitea/workflows/release-tag.yaml b/.gitea/workflows/release-tag.yaml new file mode 100644 index 0000000..d1e275b --- /dev/null +++ b/.gitea/workflows/release-tag.yaml @@ -0,0 +1,42 @@ +name: release-tag + +on: + push + +jobs: + release-image: + runs-on: ubuntu-latest + container: + image: catthehacker/ubuntu:act-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker BuildX + uses: docker/setup-buildx-action@v2 + with: + config-inline: | + [registry."https://git.tijl.dev"] + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + registry: https://git.tijl.dev + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v4 + with: + context: . + file: ./Dockerfile + platforms: | + linux/amd64 + linux/arm64 + push: true + tags: | + git.tijl.dev/tijl/tijl.dev-core:${{ steps.meta.outputs.REPO_VERSION }} + git.tijl.dev/tijl/tijl.dev-core:nightly diff --git a/.gitignore b/.gitignore index 86a4e17..9559a22 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,7 @@ tijl.dev-core web/static/js/interactive.js web/static/css/styles.css config.yaml +config.dev.yaml blog/ +.data/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7ce33c6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM node:20 AS node_builder + +WORKDIR /app +COPY package*.json ./ +RUN npm install +COPY . . +RUN npm run build:css +RUN npm run build + +FROM golang:1.22 AS go_builder + +WORKDIR /app +COPY go.mod go.sum ./ +RUN go mod download +RUN go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest +COPY --from=node_builder /app /app +RUN sqlc generate +RUN go build -o tijl.dev-core cmd/server/main.go + +FROM golang:1.22 + +WORKDIR /app +COPY --from=go_builder /app/tijl.dev-core /app/ +EXPOSE 3000 +CMD ["/app/tijl.dev-core"] + diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..a5d0507 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,28 @@ +services: + + tijldev-core: + container_name: tijl.dev-core + build: + context: . + dockerfile: Dockerfile + ports: + - 3000:3000 + volumes: + - ./config.yaml:/config.yaml + - ./blog:/blog + environment: + TIJLDEV_CONFIG_LOCATION: /config.yaml + depends_on: + - postgres + + postgres: + image: postgres + ports: + - 5432:5432 + environment: + POSTGRES_USER: tijldev + POSTGRES_PASSWORD: tijldev + POSTGRES_DB: tijldev + volumes: + - ./.data/postgres:/var/lib/postgresql/data + diff --git a/justfile b/justfile index 061ca8c..3e5408e 100644 --- a/justfile +++ b/justfile @@ -1,6 +1,3 @@ -dev: - vite - npm-build-css: npm run build:css @@ -15,3 +12,6 @@ go-build: build: npm-build-css npm-build generate-sqlc go-build +docker-dev: + docker compose -f docker-compose.yaml up --remove-orphans || docker compose -f docker-compose.yaml down --remove-orphans +