...
其中 sources.list 是镜像源文件系统的国内更新源

Dockerfile-官网
官网的 Dockerfile 存在 PHP 版本兼容性问题,建议考虑下面的 Dockerfile 版本
代码块 |
---|
FROM ubuntu:22.04
LABEL maintainer="waringid@gmail.com"
ENV GOSU_VERSION 1.11
#RUN adduser uvdesk -q --disabled-password --gecos ""
RUN apt-get update && apt-get -y install ca-certificates
RUN mv /etc/apt/sources.list /etc/apt/sources.list.orig
COPY ./deps/sources.list /etc/apt/sources.list
COPY ./deps/* /tmp/
# Install base supplimentary packages
RUN apt-get update && apt-get -y upgrade \
&& apt-get update && apt-get install -y software-properties-common && add-apt-repository -y ppa:ondrej/php \
&& apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install \
adduser curl \
wget libdigest-sha-perl \
git \
unzip \
apache2 \
mysql-server \
php7.4 \
libapache2-mod-php7.4 \
php7.4-common \
php7.4-xml \
php7.4-imap \
php7.4-mysql \
php7.4-mailparse \
ca-certificates; \
if ! command -v gpg; then \
apt-get install -y --no-install-recommends gnupg2 dirmngr; \
elif gpg --version | grep -q '^gpg (GnuPG) 1\.'; then \
apt-get install -y --no-install-recommends gnupg-curl; \
fi;
RUN adduser uvdesk -q --disabled-password --gecos ""
COPY ./.docker/config/apache2/env /etc/apache2/envvars
COPY ./.docker/config/apache2/httpd.conf /etc/apache2/apache2.conf
COPY ./.docker/config/apache2/vhost.conf /etc/apache2/sites-available/000-default.conf
COPY ./.docker/bash/uvdesk-entrypoint.sh /usr/local/bin/
COPY . /var/www/uvdesk/
RUN \
a2enmod php7.4 rewrite; \
chmod a+x /usr/local/bin/uvdesk-entrypoint.sh; \
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
mv /tmp/gosu-amd64 /usr/local/bin/gosu && mv /tmp/gosu-amd64.asc /usr/local/bin/gosu.asc; \
export GNUPGHOME="$(mktemp -d)" \
&& gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
&& gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
&& gpgconf --kill all \
&& chmod +x /usr/local/bin/gosu \
&& gosu nobody true; \
\
mv /tmp/installer /usr/local/bin/composer.php; \
actualSig="$(cat /tmp/installer.sig)"; \
currentSig="$(shasum -a 384 /usr/local/bin/composer.php | awk '{print $1}')"; \
if [ "$currentSig" != "$actualSig" ]; then \
echo "Warning: Failed to verify composer signature."; \
exit 1; \
fi; \
php /usr/local/bin/composer.php --quiet --filename=/usr/local/bin/composer \
&& chmod +x /usr/local/bin/composer; \
chown -R uvdesk:uvdesk /var/www; \
rm -rf \
# "$GNUPGHOME" \
/var/lib/apt/lists/* \
/usr/local/bin/gosu.asc \
/usr/local/bin/composer.php \
/var/www/bin \
/var/www/html \
/tmp/* \
/var/www/uvdesk/.docker;
# Change working directory to uvdesk source
WORKDIR /var/www
ENTRYPOINT ["uvdesk-entrypoint.sh"]
CMD ["/bin/bash"] |
Dockerfile-更新版本
代码块 |
---|
|
FROM thecodingmachine/php:8.3-v4-apache
ENV PHP_EXTENSION_MAILPARSE=1 \
PHP_EXTENSION_IMAP=1 \
APACHE_DOCUMENT_ROOT=/var/www/html/public \
PHP_INI_MEMORY_LIMIT=1g
RUN composer create-project uvdesk/community-skeleton /var/www/html
RUN a2enmod rewrite \
&& cd /var/www/html/ \
&& chmod 777 .env var config \
&& php bin/console c:c |
uvdesk.yml
代码块 |
---|
|
services:
uvdesk:
image: dietermartens/uvdesk
environment:
# installation in dev, change it after installation to prod
- APP_ENV=prod
- APP_SECRET=
- TZ=Asia/Shanghai
- APP_TIMEZONE=Asia/Shanghai
- APP_CURRENCY=CHN
- CRON_USER1=root
# - CRON_SCHEDULE1=*/5 * * * *
# - CRON_COMMAND1=cd /var/www/html && php bin/console uvdesk:refresh-mailbox info@domain.tld support@domain.tld
restart: always
extra_hosts:
- "{uvdesk.domain.tld}:127.0.0.1"
ports:
- 8080:80
networks:
- public
volumes:
- /data/uvdesk/data:/var/www/html
links:
- db
db:
image: mariadb:10.11.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootPassword
networks:
- public
volumes:
- /data/uvdesk/db:/var/lib/mysql
networks:
public:
name: proxy
external: false |
Image Added
Image Added