mirror of
https://github.com/grocy/grocy.git
synced 2026-03-28 07:39:25 +01:00
Merge pull request #3 from nishizhen/feature/docker-publish-workflow
feat: Add Dockerfile and GitHub Actions for automated publishing
This commit is contained in:
commit
d266e45e9d
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