mirror of
https://github.com/grocy/grocy.git
synced 2026-03-28 07:39:25 +01:00
feat: Add Dockerfile and GitHub Actions for automated publishing
This change introduces a comprehensive Dockerfile and a GitHub Actions workflow to build and publish a custom Docker image from the project's source code. - A new `Dockerfile` has been added. It builds the application from the local source, installing all necessary dependencies, ensuring that any modifications to the codebase are included in the final image. This approach is consistent with the build process of `linuxserver/grocy`. - The Docker image is configured to use Chinese (`zh_CN`) as the default language via the `GROCY_DEFAULT_LOCALE` environment variable. - A GitHub Actions workflow is added to `.github/workflows/docker-publish.yml`. It automates the process of building and publishing the image to `nishizhen/anticlockwisegrocy` on Docker Hub whenever a push is made to the `master` branch. - The `README.md` has been updated to reflect the new Docker image and provide correct instructions for its use.
This commit is contained in:
parent
5fd14f6367
commit
2a6efff2e4
33
.github/workflows/docker-publish.yml
vendored
Normal file
33
.github/workflows/docker-publish.yml
vendored
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
name: Docker Publish
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build-and-push:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v4
|
||||
with:
|
||||
images: nishizhen/anticlockwisegrocy
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
context: .
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
67
Dockerfile
Normal file
67
Dockerfile
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# Use the same base image as linuxserver/grocy for consistency
|
||||
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.21
|
||||
|
||||
# Set the default language to Chinese
|
||||
ENV GROCY_DEFAULT_LOCALE=zh_CN
|
||||
|
||||
# Install build and runtime dependencies, same as linuxserver/grocy
|
||||
RUN \
|
||||
echo "**** install build packages ****" && \
|
||||
apk add --no-cache --virtual=build-dependencies \
|
||||
git \
|
||||
yarn \
|
||||
composer && \
|
||||
echo "**** install runtime packages ****" && \
|
||||
apk add --no-cache \
|
||||
php83-gd \
|
||||
php83-intl \
|
||||
php83-ldap \
|
||||
php83-opcache \
|
||||
php83-pdo \
|
||||
php83-pdo_sqlite \
|
||||
php83-tokenizer \
|
||||
php83-fileinfo \
|
||||
php83-ctype \
|
||||
php83-zlib \
|
||||
php83-mbstring && \
|
||||
echo "**** configure php-fpm to pass env vars ****" && \
|
||||
sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php83/php-fpm.d/www.conf && \
|
||||
grep -qxF 'clear_env = no' /etc/php83/php-fpm.d/www.conf || echo 'clear_env = no' >> /etc/php83/php-fpm.d/www.conf
|
||||
|
||||
# Set up the application directory
|
||||
RUN mkdir -p /app/www/
|
||||
|
||||
# Copy the application source code into the container
|
||||
# We are in the root of the project, so this copies everything
|
||||
COPY . /app/www/
|
||||
|
||||
# Set correct permissions for the web server to write to the data directory
|
||||
# The base image's init system will set ownership for /app, but let's ensure permissions are correct.
|
||||
RUN chmod -R 777 /app/www/data
|
||||
|
||||
# Install dependencies and perform cleanup
|
||||
RUN \
|
||||
echo "**** install composer packages ****" && \
|
||||
composer install -d /app/www --no-dev --optimize-autoloader && \
|
||||
echo "**** install yarn packages ****" && \
|
||||
cd /app/www && \
|
||||
yarn --production && \
|
||||
yarn cache clean && \
|
||||
echo "**** cleanup build packages ****" && \
|
||||
apk del --purge \
|
||||
build-dependencies && \
|
||||
rm -rf \
|
||||
/tmp/* \
|
||||
$HOME/.cache \
|
||||
$HOME/.composer
|
||||
|
||||
# The linuxserver.io base image handles nginx config and service startup.
|
||||
# It's pre-configured to serve a PHP application from /app/www/public.
|
||||
# It also handles the PUID/PGID logic for permissions on /config volume.
|
||||
# So, we don't need to copy nginx configs or write startup scripts.
|
||||
|
||||
# Expose standard web ports
|
||||
EXPOSE 80 443
|
||||
|
||||
# Define the volume for persistent data
|
||||
VOLUME /config
|
||||
23
README.md
23
README.md
|
|
@ -36,7 +36,28 @@
|
|||
|
||||
对于有一定技术基础的用户,我们推荐使用 Docker 进行安装。这是最快、最稳定的方式。
|
||||
|
||||
→ [查看 Docker 安装指南](https://hub.docker.com/r/linuxserver/grocy)
|
||||
我们的 Docker 镜像基于本项目的源代码构建,默认使用中文界面,并已为您准备好一切。
|
||||
|
||||
1. **拉取镜像**
|
||||
```bash
|
||||
docker pull nishizhen/anticlockwisegrocy:latest
|
||||
```
|
||||
|
||||
2. **运行容器**
|
||||
```bash
|
||||
docker run -d \
|
||||
--name=anticlockwisegrocy \
|
||||
-p 9283:80 \
|
||||
-v /path/to/your/data:/config \
|
||||
nishizhen/anticlockwisegrocy:latest
|
||||
```
|
||||
**请注意**:
|
||||
* `-p 9283:80`:将容器的 80 端口映射到您服务器的 9283 端口。您可以根据需要更改 `9283`。
|
||||
* `-v /path/to/your/data:/config`:将您的数据持久化存储在本地。请务必将 `/path/to/your/data` 替换为您服务器上的一个**真实路径**,例如 `/home/user/grocy_data`。
|
||||
|
||||
3. **访问应用**
|
||||
打开浏览器,访问 `http://<您的服务器IP>:9283`。
|
||||
默认登录用户为 `admin`,密码为 `admin`,请在登录后立即修改密码。
|
||||
|
||||
### 方式二:手动安装
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user