Integrate feedback from tianon (#10)
This commit is contained in:
parent
870d1c2893
commit
7989be371b
@ -26,7 +26,6 @@ services:
|
|||||||
env_file: .env
|
env_file: .env
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html
|
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@ -53,7 +52,6 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html:ro
|
|
||||||
command: cron.sh
|
command: cron.sh
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@ -65,7 +63,6 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html:ro
|
|
||||||
command: queue.sh
|
command: queue.sh
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@ -78,7 +75,6 @@ services:
|
|||||||
- VIRTUAL_HOST=monica.local
|
- VIRTUAL_HOST=monica.local
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage:ro
|
- data:/var/www/html/storage:ro
|
||||||
- www:/var/www/html:ro
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
networks:
|
networks:
|
||||||
@ -115,7 +111,6 @@ services:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
www:
|
|
||||||
db:
|
db:
|
||||||
certs:
|
certs:
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
FROM monica:fpm AS monica
|
||||||
|
|
||||||
FROM nginx:alpine
|
FROM nginx:alpine
|
||||||
|
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
# Copy content of monica image
|
||||||
|
COPY --from=monica /var/www/html /var/www/html
|
||||||
|
RUN ln -sf /var/www/html/storage/app/public /var/www/html/public/storage
|
||||||
|
|||||||
@ -25,7 +25,6 @@ services:
|
|||||||
env_file: .env
|
env_file: .env
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html
|
|
||||||
restart: always
|
restart: always
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@ -52,7 +51,6 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html:ro
|
|
||||||
command: cron.sh
|
command: cron.sh
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@ -64,7 +62,6 @@ services:
|
|||||||
restart: always
|
restart: always
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html:ro
|
|
||||||
command: queue.sh
|
command: queue.sh
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
@ -79,7 +76,6 @@ services:
|
|||||||
- LETSENCRYPT_EMAIL=
|
- LETSENCRYPT_EMAIL=
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage:ro
|
- data:/var/www/html/storage:ro
|
||||||
- www:/var/www/html:ro
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
networks:
|
networks:
|
||||||
@ -117,7 +113,6 @@ services:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
www:
|
|
||||||
mysql:
|
mysql:
|
||||||
certs:
|
certs:
|
||||||
vhost.d:
|
vhost.d:
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
FROM monica:fpm AS monica
|
||||||
|
|
||||||
FROM nginx:alpine
|
FROM nginx:alpine
|
||||||
|
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
# Copy content of monica image
|
||||||
|
COPY --from=monica /var/www/html /var/www/html
|
||||||
|
RUN ln -sf /var/www/html/storage/app/public /var/www/html/public/storage
|
||||||
|
|||||||
@ -10,4 +10,4 @@ RUN set -ex; \
|
|||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY supervisord.conf /etc/supervisord.conf
|
COPY supervisord.conf /etc/supervisord.conf
|
||||||
CMD ["supervisord", "-c /etc/supervisord.conf"]
|
CMD ["supervisord", "-c", "/etc/supervisord.conf"]
|
||||||
|
|||||||
@ -10,7 +10,6 @@ services:
|
|||||||
- 80:80
|
- 80:80
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html
|
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
db:
|
db:
|
||||||
@ -26,5 +25,4 @@ services:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
www:
|
|
||||||
mysql:
|
mysql:
|
||||||
|
|||||||
@ -8,4 +8,4 @@ RUN set -ex; \
|
|||||||
;
|
;
|
||||||
|
|
||||||
COPY supervisord.conf /etc/supervisord.conf
|
COPY supervisord.conf /etc/supervisord.conf
|
||||||
CMD ["supervisord", "-c /etc/supervisord.conf"]
|
CMD ["supervisord", "-c", "/etc/supervisord.conf"]
|
||||||
|
|||||||
@ -8,17 +8,15 @@ services:
|
|||||||
env_file: .env
|
env_file: .env
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html
|
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
web:
|
web:
|
||||||
build: ./web
|
build: ./web
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 80:80
|
- 8880:80
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage:ro
|
- data:/var/www/html/storage:ro
|
||||||
- www:/var/www/html:ro
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
|
|
||||||
@ -35,5 +33,4 @@ services:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
www:
|
|
||||||
mysql:
|
mysql:
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
FROM monica:fpm-alpine AS monica
|
||||||
|
|
||||||
FROM nginx:alpine
|
FROM nginx:alpine
|
||||||
|
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
# Copy content of monica image
|
||||||
|
COPY --from=monica /var/www/html /var/www/html
|
||||||
|
RUN ln -sf /var/www/html/storage/app/public /var/www/html/public/storage
|
||||||
|
|||||||
@ -10,4 +10,4 @@ RUN set -ex; \
|
|||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
COPY supervisord.conf /etc/supervisord.conf
|
COPY supervisord.conf /etc/supervisord.conf
|
||||||
CMD ["supervisord", "-c /etc/supervisord.conf"]
|
CMD ["supervisord", "-c", "/etc/supervisord.conf"]
|
||||||
|
|||||||
@ -8,7 +8,6 @@ services:
|
|||||||
env_file: .env
|
env_file: .env
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
- www:/var/www/html
|
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
web:
|
web:
|
||||||
@ -18,7 +17,6 @@ services:
|
|||||||
- 80:80
|
- 80:80
|
||||||
volumes:
|
volumes:
|
||||||
- data:/var/www/html/storage:ro
|
- data:/var/www/html/storage:ro
|
||||||
- www:/var/www/html:ro
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
|
|
||||||
@ -35,5 +33,4 @@ services:
|
|||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
www:
|
|
||||||
mysql:
|
mysql:
|
||||||
|
|||||||
@ -1,3 +1,9 @@
|
|||||||
|
FROM monica:fpm AS monica
|
||||||
|
|
||||||
FROM nginx:alpine
|
FROM nginx:alpine
|
||||||
|
|
||||||
COPY nginx.conf /etc/nginx/nginx.conf
|
COPY nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
|
# Copy content of monica image
|
||||||
|
COPY --from=monica /var/www/html /var/www/html
|
||||||
|
RUN ln -sf /var/www/html/storage/app/public /var/www/html/public/storage
|
||||||
|
|||||||
@ -9,9 +9,7 @@ RUN set -ex; \
|
|||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
bash \
|
||||||
coreutils \
|
coreutils \
|
||||||
rsync \
|
rsync
|
||||||
; \
|
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
# Install required PHP extensions
|
# Install required PHP extensions
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
@ -71,9 +69,8 @@ RUN set -ex; \
|
|||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --virtual .monica-phpext-rundeps $runDeps; \
|
apk add --no-network --virtual .monica-phpext-rundeps $runDeps; \
|
||||||
apk del .build-deps; \
|
apk del --no-network .build-deps
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
# Set crontab for schedules
|
# Set crontab for schedules
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
@ -86,14 +83,16 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \
|
|||||||
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
||||||
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
||||||
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
||||||
RUN { \
|
RUN set -ex; \
|
||||||
|
\
|
||||||
|
{ \
|
||||||
echo '[opcache]'; \
|
echo '[opcache]'; \
|
||||||
echo 'opcache.enable=1'; \
|
echo 'opcache.enable=1'; \
|
||||||
echo 'opcache.revalidate_freq=0'; \
|
echo 'opcache.revalidate_freq=0'; \
|
||||||
echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \
|
echo 'opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}'; \
|
||||||
echo "opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}"; \
|
echo 'opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}'; \
|
||||||
echo "opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}"; \
|
echo 'opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}'; \
|
||||||
echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \
|
echo 'opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}'; \
|
||||||
echo 'opcache.interned_strings_buffer=16'; \
|
echo 'opcache.interned_strings_buffer=16'; \
|
||||||
echo 'opcache.fast_shutdown=1'; \
|
echo 'opcache.fast_shutdown=1'; \
|
||||||
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
||||||
@ -102,21 +101,12 @@ RUN { \
|
|||||||
\
|
\
|
||||||
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
||||||
|
|
||||||
# Sentry
|
|
||||||
RUN if [ $(uname -m) = "x86_64" ]; then \
|
|
||||||
PLATFORM=$(uname -s); \
|
|
||||||
if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \
|
|
||||||
mkdir -p /root/.local/bin; \
|
|
||||||
curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \
|
|
||||||
fi \
|
|
||||||
fi
|
|
||||||
|
|
||||||
VOLUME /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
# Define Monica version and expected SHA512 signature
|
# Define Monica version and expected SHA512 signature
|
||||||
ENV MONICA_VERSION %%VERSION%%
|
ENV MONICA_VERSION %%VERSION%%
|
||||||
ENV MONICA_SHA512 %%SHA512%%
|
ENV MONICA_SHA512 %%SHA512%%
|
||||||
ENV MONICA_SRC /usr/src/monica
|
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk add --no-cache --virtual .fetch-deps \
|
apk add --no-cache --virtual .fetch-deps \
|
||||||
@ -124,20 +114,16 @@ RUN set -ex; \
|
|||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
||||||
echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \
|
echo "$MONICA_SHA512 monica.tar.bz2" | sha512sum -c -; \
|
||||||
\
|
\
|
||||||
mkdir $MONICA_SRC; \
|
tar -xf monica.tar.bz2 -C /var/www/html --strip-components=1; \
|
||||||
tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \
|
|
||||||
rm monica.tar.bz2; \
|
rm monica.tar.bz2; \
|
||||||
\
|
\
|
||||||
cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \
|
cp /var/www/html/.env.example /var/www/html/.env; \
|
||||||
chown -R www-data:www-data $MONICA_SRC; \
|
chown -R www-data:www-data /var/www/html; \
|
||||||
\
|
\
|
||||||
apk del .fetch-deps; \
|
apk del .fetch-deps
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
COPY upgrade.exclude \
|
|
||||||
/usr/local/share/
|
|
||||||
COPY entrypoint.sh \
|
COPY entrypoint.sh \
|
||||||
queue.sh \
|
queue.sh \
|
||||||
cron.sh \
|
cron.sh \
|
||||||
|
|||||||
@ -7,7 +7,6 @@ FROM php:%%PHP_VERSION%%-%%VARIANT%%
|
|||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get -y autoremove; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
rsync \
|
rsync \
|
||||||
bash \
|
bash \
|
||||||
@ -95,14 +94,16 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \
|
|||||||
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
||||||
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
||||||
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
||||||
RUN { \
|
RUN set -ex; \
|
||||||
|
\
|
||||||
|
{ \
|
||||||
echo '[opcache]'; \
|
echo '[opcache]'; \
|
||||||
echo 'opcache.enable=1'; \
|
echo 'opcache.enable=1'; \
|
||||||
echo 'opcache.revalidate_freq=0'; \
|
echo 'opcache.revalidate_freq=0'; \
|
||||||
echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \
|
echo 'opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}'; \
|
||||||
echo "opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}"; \
|
echo 'opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}'; \
|
||||||
echo "opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}"; \
|
echo 'opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}'; \
|
||||||
echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \
|
echo 'opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}'; \
|
||||||
echo 'opcache.interned_strings_buffer=16'; \
|
echo 'opcache.interned_strings_buffer=16'; \
|
||||||
echo 'opcache.fast_shutdown=1'; \
|
echo 'opcache.fast_shutdown=1'; \
|
||||||
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
||||||
@ -111,37 +112,26 @@ RUN { \
|
|||||||
\
|
\
|
||||||
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
||||||
|
|
||||||
# Sentry
|
|
||||||
RUN if [ $(uname -m) = "x86_64" ]; then \
|
|
||||||
PLATFORM=$(uname -s); \
|
|
||||||
if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \
|
|
||||||
mkdir -p /root/.local/bin; \
|
|
||||||
curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \
|
|
||||||
fi \
|
|
||||||
fi
|
|
||||||
|
|
||||||
VOLUME /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
# Define Monica version and expected SHA512 signature
|
# Define Monica version and expected SHA512 signature
|
||||||
ENV MONICA_VERSION %%VERSION%%
|
ENV MONICA_VERSION %%VERSION%%
|
||||||
ENV MONICA_SHA512 %%SHA512%%
|
ENV MONICA_SHA512 %%SHA512%%
|
||||||
ENV MONICA_SRC /usr/src/monica
|
|
||||||
|
|
||||||
%%APACHE_DOCUMENT%%
|
%%APACHE_DOCUMENT%%
|
||||||
|
|
||||||
RUN set -eu; \
|
RUN set -ex; \
|
||||||
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
|
||||||
echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \
|
|
||||||
\
|
\
|
||||||
mkdir $MONICA_SRC; \
|
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
||||||
tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \
|
echo "$MONICA_SHA512 monica.tar.bz2" | sha512sum -c -; \
|
||||||
|
\
|
||||||
|
tar -xf monica.tar.bz2 -C /var/www/html --strip-components=1; \
|
||||||
rm monica.tar.bz2; \
|
rm monica.tar.bz2; \
|
||||||
\
|
\
|
||||||
cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \
|
cp /var/www/html/.env.example /var/www/html/.env; \
|
||||||
chown -R www-data:www-data $MONICA_SRC
|
chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
COPY upgrade.exclude \
|
|
||||||
/usr/local/share/
|
|
||||||
COPY entrypoint.sh \
|
COPY entrypoint.sh \
|
||||||
queue.sh \
|
queue.sh \
|
||||||
cron.sh \
|
cron.sh \
|
||||||
|
|||||||
14
README.md
14
README.md
@ -142,10 +142,13 @@ When using FPM image, you will need another container with a webserver to proxy
|
|||||||
|
|
||||||
The webserver will need an access to all static files from Monica container, the volumes `html` will deal with it.
|
The webserver will need an access to all static files from Monica container, the volumes `html` will deal with it.
|
||||||
|
|
||||||
1. Download `nginx.conf` file. An example can be found on the [`example section`](/.examples/nginx-proxy/web/nginx.conf)
|
1. Download `nginx.conf` and `Dockerfile` file for nginx image. An example can be found on the [`example section`](/.examples/nginx-proxy/web/)
|
||||||
```sh
|
```sh
|
||||||
curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/nginx.conf -o nginx.conf
|
mkdir web
|
||||||
|
curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/nginx.conf -o web/nginx.conf
|
||||||
|
curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/Dockerfile -o web/Dockerfile
|
||||||
```
|
```
|
||||||
|
The `web` container image should be pre-build before each deploy with: `docker-compose build`
|
||||||
|
|
||||||
2. Create a `docker-compose.yml` file
|
2. Create a `docker-compose.yml` file
|
||||||
|
|
||||||
@ -161,19 +164,16 @@ services:
|
|||||||
- APP_KEY=
|
- APP_KEY=
|
||||||
- DB_HOST=db
|
- DB_HOST=db
|
||||||
volumes:
|
volumes:
|
||||||
- html:/var/www/html
|
|
||||||
- data:/var/www/html/storage
|
- data:/var/www/html/storage
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: nginx
|
build: ./web
|
||||||
ports:
|
ports:
|
||||||
- 8080:80
|
- 8080:80
|
||||||
depends_on:
|
depends_on:
|
||||||
- app
|
- app
|
||||||
volumes:
|
volumes:
|
||||||
- ./nginx.conf:/etc/nginx/nginx.conf:ro
|
|
||||||
- html:/var/www/html:ro
|
|
||||||
- data:/var/www/html/storage:ro
|
- data:/var/www/html/storage:ro
|
||||||
restart: always
|
restart: always
|
||||||
|
|
||||||
@ -191,8 +191,6 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
data:
|
data:
|
||||||
name: data
|
name: data
|
||||||
html:
|
|
||||||
name: html
|
|
||||||
mysql:
|
mysql:
|
||||||
name: mysql
|
name: mysql
|
||||||
```
|
```
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
FROM php:7.3-apache
|
FROM php:7.3-apache
|
||||||
|
|
||||||
# opencontainers annotations https://github.com/opencontainers/image-spec/blob/master/annotations.md
|
# opencontainers annotations https://github.com/opencontainers/image-spec/blob/master/annotations.md
|
||||||
LABEL maintainer="Alexis Saettler <alexis@saettler.org> (@asbiin)" \
|
LABEL org.opencontainers.image.authors="Alexis Saettler <alexis@saettler.org>" \
|
||||||
org.opencontainers.image.authors="Alexis Saettler <alexis@saettler.org>" \
|
|
||||||
org.opencontainers.image.title="MonicaHQ, the Personal Relationship Manager" \
|
org.opencontainers.image.title="MonicaHQ, the Personal Relationship Manager" \
|
||||||
org.opencontainers.image.description="This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you." \
|
org.opencontainers.image.description="This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you." \
|
||||||
org.opencontainers.image.url="https://monicahq.com" \
|
org.opencontainers.image.url="https://monicahq.com" \
|
||||||
@ -15,7 +14,6 @@ LABEL maintainer="Alexis Saettler <alexis@saettler.org> (@asbiin)" \
|
|||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get -y autoremove; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
rsync \
|
rsync \
|
||||||
bash \
|
bash \
|
||||||
@ -103,14 +101,16 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \
|
|||||||
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
||||||
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
||||||
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
||||||
RUN { \
|
RUN set -ex; \
|
||||||
|
\
|
||||||
|
{ \
|
||||||
echo '[opcache]'; \
|
echo '[opcache]'; \
|
||||||
echo 'opcache.enable=1'; \
|
echo 'opcache.enable=1'; \
|
||||||
echo 'opcache.revalidate_freq=0'; \
|
echo 'opcache.revalidate_freq=0'; \
|
||||||
echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \
|
echo 'opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}'; \
|
||||||
echo "opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}"; \
|
echo 'opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}'; \
|
||||||
echo "opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}"; \
|
echo 'opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}'; \
|
||||||
echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \
|
echo 'opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}'; \
|
||||||
echo 'opcache.interned_strings_buffer=16'; \
|
echo 'opcache.interned_strings_buffer=16'; \
|
||||||
echo 'opcache.fast_shutdown=1'; \
|
echo 'opcache.fast_shutdown=1'; \
|
||||||
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
||||||
@ -119,39 +119,28 @@ RUN { \
|
|||||||
\
|
\
|
||||||
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
||||||
|
|
||||||
# Sentry
|
|
||||||
RUN if [ $(uname -m) = "x86_64" ]; then \
|
|
||||||
PLATFORM=$(uname -s); \
|
|
||||||
if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \
|
|
||||||
mkdir -p /root/.local/bin; \
|
|
||||||
curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \
|
|
||||||
fi \
|
|
||||||
fi
|
|
||||||
|
|
||||||
VOLUME /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
# Define Monica version and expected SHA512 signature
|
# Define Monica version and expected SHA512 signature
|
||||||
ENV MONICA_VERSION v2.17.0
|
ENV MONICA_VERSION v2.17.0
|
||||||
ENV MONICA_SHA512 9e208f3aee15eb8ffcd33aa834fc2a4c07ef3396234132d76e2563e0c17c596e5f505aa6527625b13be1f564f8583c4bbd2a54c44d26f8e9c8418d9636c8720b
|
ENV MONICA_SHA512 9e208f3aee15eb8ffcd33aa834fc2a4c07ef3396234132d76e2563e0c17c596e5f505aa6527625b13be1f564f8583c4bbd2a54c44d26f8e9c8418d9636c8720b
|
||||||
ENV MONICA_SRC /usr/src/monica
|
|
||||||
|
|
||||||
ENV APACHE_DOCUMENT_ROOT /var/www/html/public
|
ENV APACHE_DOCUMENT_ROOT /var/www/html/public
|
||||||
RUN set -eu; sed -ri -e "s!/var/www/html!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/sites-available/*.conf; \
|
RUN set -eu; sed -ri -e "s!/var/www/html!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/sites-available/*.conf; \
|
||||||
sed -ri -e "s!/var/www/!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
|
sed -ri -e "s!/var/www/!${APACHE_DOCUMENT_ROOT}!g" /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
|
||||||
|
|
||||||
RUN set -eu; \
|
RUN set -ex; \
|
||||||
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
|
||||||
echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \
|
|
||||||
\
|
\
|
||||||
mkdir $MONICA_SRC; \
|
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
||||||
tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \
|
echo "$MONICA_SHA512 monica.tar.bz2" | sha512sum -c -; \
|
||||||
|
\
|
||||||
|
tar -xf monica.tar.bz2 -C /var/www/html --strip-components=1; \
|
||||||
rm monica.tar.bz2; \
|
rm monica.tar.bz2; \
|
||||||
\
|
\
|
||||||
cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \
|
cp /var/www/html/.env.example /var/www/html/.env; \
|
||||||
chown -R www-data:www-data $MONICA_SRC
|
chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
COPY upgrade.exclude \
|
|
||||||
/usr/local/share/
|
|
||||||
COPY entrypoint.sh \
|
COPY entrypoint.sh \
|
||||||
queue.sh \
|
queue.sh \
|
||||||
cron.sh \
|
cron.sh \
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# return true if specified directory is empty
|
set -Eeuo pipefail
|
||||||
directory_empty() {
|
|
||||||
[ -z "$(ls -A "$1/")" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# wait for the database to start
|
# wait for the database to start
|
||||||
waitfordb() {
|
waitfordb() {
|
||||||
@ -31,26 +28,9 @@ waitfordb() {
|
|||||||
|
|
||||||
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
||||||
|
|
||||||
MONICASRC=/usr/src/monica
|
|
||||||
MONICADIR=/var/www/html
|
MONICADIR=/var/www/html
|
||||||
ARTISAN="php ${MONICADIR}/artisan"
|
ARTISAN="php ${MONICADIR}/artisan"
|
||||||
|
|
||||||
# Update application sources
|
|
||||||
echo "Syncing sources..."
|
|
||||||
if [ "$(id -u)" = 0 ]; then
|
|
||||||
rsync_options="-rlDog --chown www-data:www-data"
|
|
||||||
else
|
|
||||||
rsync_options="-rlD"
|
|
||||||
fi
|
|
||||||
rsync $rsync_options --delete --exclude-from=/usr/local/share/upgrade.exclude $MONICASRC/ $MONICADIR/
|
|
||||||
|
|
||||||
for dir in storage; do
|
|
||||||
if [ ! -d "$MONICADIR/$dir" ] || directory_empty "$MONICADIR/$dir"; then
|
|
||||||
rsync $rsync_options --include "/$dir/" --exclude '/*' $MONICASRC/ $MONICADIR/
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "...done!"
|
|
||||||
|
|
||||||
# Ensure storage directories are present
|
# Ensure storage directories are present
|
||||||
STORAGE=${MONICADIR}/storage
|
STORAGE=${MONICADIR}/storage
|
||||||
mkdir -p ${STORAGE}/logs
|
mkdir -p ${STORAGE}/logs
|
||||||
@ -86,4 +66,4 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec $@
|
exec "$@"
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
/storage
|
|
||||||
10
build.sh
Executable file
10
build.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
for variant in apache fpm fpm-alpine; do
|
||||||
|
pushd $variant
|
||||||
|
docker build --no-cache -t monica:$variant .
|
||||||
|
popd
|
||||||
|
done
|
||||||
|
|
||||||
|
docker images
|
||||||
@ -1,9 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# return true if specified directory is empty
|
set -Eeuo pipefail
|
||||||
directory_empty() {
|
|
||||||
[ -z "$(ls -A "$1/")" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# wait for the database to start
|
# wait for the database to start
|
||||||
waitfordb() {
|
waitfordb() {
|
||||||
@ -31,26 +28,9 @@ waitfordb() {
|
|||||||
|
|
||||||
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
||||||
|
|
||||||
MONICASRC=/usr/src/monica
|
|
||||||
MONICADIR=/var/www/html
|
MONICADIR=/var/www/html
|
||||||
ARTISAN="php ${MONICADIR}/artisan"
|
ARTISAN="php ${MONICADIR}/artisan"
|
||||||
|
|
||||||
# Update application sources
|
|
||||||
echo "Syncing sources..."
|
|
||||||
if [ "$(id -u)" = 0 ]; then
|
|
||||||
rsync_options="-rlDog --chown www-data:www-data"
|
|
||||||
else
|
|
||||||
rsync_options="-rlD"
|
|
||||||
fi
|
|
||||||
rsync $rsync_options --delete --exclude-from=/usr/local/share/upgrade.exclude $MONICASRC/ $MONICADIR/
|
|
||||||
|
|
||||||
for dir in storage; do
|
|
||||||
if [ ! -d "$MONICADIR/$dir" ] || directory_empty "$MONICADIR/$dir"; then
|
|
||||||
rsync $rsync_options --include "/$dir/" --exclude '/*' $MONICASRC/ $MONICADIR/
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "...done!"
|
|
||||||
|
|
||||||
# Ensure storage directories are present
|
# Ensure storage directories are present
|
||||||
STORAGE=${MONICADIR}/storage
|
STORAGE=${MONICADIR}/storage
|
||||||
mkdir -p ${STORAGE}/logs
|
mkdir -p ${STORAGE}/logs
|
||||||
@ -86,4 +66,4 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec $@
|
exec "$@"
|
||||||
|
|||||||
@ -1,8 +1,7 @@
|
|||||||
FROM php:7.3-fpm-alpine
|
FROM php:7.3-fpm-alpine
|
||||||
|
|
||||||
# opencontainers annotations https://github.com/opencontainers/image-spec/blob/master/annotations.md
|
# opencontainers annotations https://github.com/opencontainers/image-spec/blob/master/annotations.md
|
||||||
LABEL maintainer="Alexis Saettler <alexis@saettler.org> (@asbiin)" \
|
LABEL org.opencontainers.image.authors="Alexis Saettler <alexis@saettler.org>" \
|
||||||
org.opencontainers.image.authors="Alexis Saettler <alexis@saettler.org>" \
|
|
||||||
org.opencontainers.image.title="MonicaHQ, the Personal Relationship Manager" \
|
org.opencontainers.image.title="MonicaHQ, the Personal Relationship Manager" \
|
||||||
org.opencontainers.image.description="This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you." \
|
org.opencontainers.image.description="This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you." \
|
||||||
org.opencontainers.image.url="https://monicahq.com" \
|
org.opencontainers.image.url="https://monicahq.com" \
|
||||||
@ -17,9 +16,7 @@ RUN set -ex; \
|
|||||||
apk add --no-cache \
|
apk add --no-cache \
|
||||||
bash \
|
bash \
|
||||||
coreutils \
|
coreutils \
|
||||||
rsync \
|
rsync
|
||||||
; \
|
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
# Install required PHP extensions
|
# Install required PHP extensions
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
@ -79,9 +76,8 @@ RUN set -ex; \
|
|||||||
| sort -u \
|
| sort -u \
|
||||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||||
)"; \
|
)"; \
|
||||||
apk add --virtual .monica-phpext-rundeps $runDeps; \
|
apk add --no-network --virtual .monica-phpext-rundeps $runDeps; \
|
||||||
apk del .build-deps; \
|
apk del --no-network .build-deps
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
# Set crontab for schedules
|
# Set crontab for schedules
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
@ -94,14 +90,16 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \
|
|||||||
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
||||||
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
||||||
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
||||||
RUN { \
|
RUN set -ex; \
|
||||||
|
\
|
||||||
|
{ \
|
||||||
echo '[opcache]'; \
|
echo '[opcache]'; \
|
||||||
echo 'opcache.enable=1'; \
|
echo 'opcache.enable=1'; \
|
||||||
echo 'opcache.revalidate_freq=0'; \
|
echo 'opcache.revalidate_freq=0'; \
|
||||||
echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \
|
echo 'opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}'; \
|
||||||
echo "opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}"; \
|
echo 'opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}'; \
|
||||||
echo "opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}"; \
|
echo 'opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}'; \
|
||||||
echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \
|
echo 'opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}'; \
|
||||||
echo 'opcache.interned_strings_buffer=16'; \
|
echo 'opcache.interned_strings_buffer=16'; \
|
||||||
echo 'opcache.fast_shutdown=1'; \
|
echo 'opcache.fast_shutdown=1'; \
|
||||||
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
||||||
@ -110,21 +108,12 @@ RUN { \
|
|||||||
\
|
\
|
||||||
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
||||||
|
|
||||||
# Sentry
|
|
||||||
RUN if [ $(uname -m) = "x86_64" ]; then \
|
|
||||||
PLATFORM=$(uname -s); \
|
|
||||||
if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \
|
|
||||||
mkdir -p /root/.local/bin; \
|
|
||||||
curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \
|
|
||||||
fi \
|
|
||||||
fi
|
|
||||||
|
|
||||||
VOLUME /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
# Define Monica version and expected SHA512 signature
|
# Define Monica version and expected SHA512 signature
|
||||||
ENV MONICA_VERSION v2.17.0
|
ENV MONICA_VERSION v2.17.0
|
||||||
ENV MONICA_SHA512 9e208f3aee15eb8ffcd33aa834fc2a4c07ef3396234132d76e2563e0c17c596e5f505aa6527625b13be1f564f8583c4bbd2a54c44d26f8e9c8418d9636c8720b
|
ENV MONICA_SHA512 9e208f3aee15eb8ffcd33aa834fc2a4c07ef3396234132d76e2563e0c17c596e5f505aa6527625b13be1f564f8583c4bbd2a54c44d26f8e9c8418d9636c8720b
|
||||||
ENV MONICA_SRC /usr/src/monica
|
|
||||||
|
|
||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
apk add --no-cache --virtual .fetch-deps \
|
apk add --no-cache --virtual .fetch-deps \
|
||||||
@ -132,20 +121,16 @@ RUN set -ex; \
|
|||||||
; \
|
; \
|
||||||
\
|
\
|
||||||
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
||||||
echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \
|
echo "$MONICA_SHA512 monica.tar.bz2" | sha512sum -c -; \
|
||||||
\
|
\
|
||||||
mkdir $MONICA_SRC; \
|
tar -xf monica.tar.bz2 -C /var/www/html --strip-components=1; \
|
||||||
tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \
|
|
||||||
rm monica.tar.bz2; \
|
rm monica.tar.bz2; \
|
||||||
\
|
\
|
||||||
cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \
|
cp /var/www/html/.env.example /var/www/html/.env; \
|
||||||
chown -R www-data:www-data $MONICA_SRC; \
|
chown -R www-data:www-data /var/www/html; \
|
||||||
\
|
\
|
||||||
apk del .fetch-deps; \
|
apk del .fetch-deps
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
COPY upgrade.exclude \
|
|
||||||
/usr/local/share/
|
|
||||||
COPY entrypoint.sh \
|
COPY entrypoint.sh \
|
||||||
queue.sh \
|
queue.sh \
|
||||||
cron.sh \
|
cron.sh \
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# return true if specified directory is empty
|
set -Eeuo pipefail
|
||||||
directory_empty() {
|
|
||||||
[ -z "$(ls -A "$1/")" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# wait for the database to start
|
# wait for the database to start
|
||||||
waitfordb() {
|
waitfordb() {
|
||||||
@ -31,26 +28,9 @@ waitfordb() {
|
|||||||
|
|
||||||
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
||||||
|
|
||||||
MONICASRC=/usr/src/monica
|
|
||||||
MONICADIR=/var/www/html
|
MONICADIR=/var/www/html
|
||||||
ARTISAN="php ${MONICADIR}/artisan"
|
ARTISAN="php ${MONICADIR}/artisan"
|
||||||
|
|
||||||
# Update application sources
|
|
||||||
echo "Syncing sources..."
|
|
||||||
if [ "$(id -u)" = 0 ]; then
|
|
||||||
rsync_options="-rlDog --chown www-data:www-data"
|
|
||||||
else
|
|
||||||
rsync_options="-rlD"
|
|
||||||
fi
|
|
||||||
rsync $rsync_options --delete --exclude-from=/usr/local/share/upgrade.exclude $MONICASRC/ $MONICADIR/
|
|
||||||
|
|
||||||
for dir in storage; do
|
|
||||||
if [ ! -d "$MONICADIR/$dir" ] || directory_empty "$MONICADIR/$dir"; then
|
|
||||||
rsync $rsync_options --include "/$dir/" --exclude '/*' $MONICASRC/ $MONICADIR/
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "...done!"
|
|
||||||
|
|
||||||
# Ensure storage directories are present
|
# Ensure storage directories are present
|
||||||
STORAGE=${MONICADIR}/storage
|
STORAGE=${MONICADIR}/storage
|
||||||
mkdir -p ${STORAGE}/logs
|
mkdir -p ${STORAGE}/logs
|
||||||
@ -86,4 +66,4 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec $@
|
exec "$@"
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
/storage
|
|
||||||
@ -1,8 +1,7 @@
|
|||||||
FROM php:7.3-fpm
|
FROM php:7.3-fpm
|
||||||
|
|
||||||
# opencontainers annotations https://github.com/opencontainers/image-spec/blob/master/annotations.md
|
# opencontainers annotations https://github.com/opencontainers/image-spec/blob/master/annotations.md
|
||||||
LABEL maintainer="Alexis Saettler <alexis@saettler.org> (@asbiin)" \
|
LABEL org.opencontainers.image.authors="Alexis Saettler <alexis@saettler.org>" \
|
||||||
org.opencontainers.image.authors="Alexis Saettler <alexis@saettler.org>" \
|
|
||||||
org.opencontainers.image.title="MonicaHQ, the Personal Relationship Manager" \
|
org.opencontainers.image.title="MonicaHQ, the Personal Relationship Manager" \
|
||||||
org.opencontainers.image.description="This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you." \
|
org.opencontainers.image.description="This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you." \
|
||||||
org.opencontainers.image.url="https://monicahq.com" \
|
org.opencontainers.image.url="https://monicahq.com" \
|
||||||
@ -15,7 +14,6 @@ LABEL maintainer="Alexis Saettler <alexis@saettler.org> (@asbiin)" \
|
|||||||
RUN set -ex; \
|
RUN set -ex; \
|
||||||
\
|
\
|
||||||
apt-get update; \
|
apt-get update; \
|
||||||
apt-get -y autoremove; \
|
|
||||||
apt-get install -y --no-install-recommends \
|
apt-get install -y --no-install-recommends \
|
||||||
rsync \
|
rsync \
|
||||||
bash \
|
bash \
|
||||||
@ -103,14 +101,16 @@ ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS="0" \
|
|||||||
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
PHP_OPCACHE_MAX_ACCELERATED_FILES="20000" \
|
||||||
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
PHP_OPCACHE_MEMORY_CONSUMPTION="192" \
|
||||||
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
PHP_OPCACHE_MAX_WASTED_PERCENTAGE="10"
|
||||||
RUN { \
|
RUN set -ex; \
|
||||||
|
\
|
||||||
|
{ \
|
||||||
echo '[opcache]'; \
|
echo '[opcache]'; \
|
||||||
echo 'opcache.enable=1'; \
|
echo 'opcache.enable=1'; \
|
||||||
echo 'opcache.revalidate_freq=0'; \
|
echo 'opcache.revalidate_freq=0'; \
|
||||||
echo "opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}"; \
|
echo 'opcache.validate_timestamps=${PHP_OPCACHE_VALIDATE_TIMESTAMPS}'; \
|
||||||
echo "opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}"; \
|
echo 'opcache.max_accelerated_files=${PHP_OPCACHE_MAX_ACCELERATED_FILES}'; \
|
||||||
echo "opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}"; \
|
echo 'opcache.memory_consumption=${PHP_OPCACHE_MEMORY_CONSUMPTION}'; \
|
||||||
echo "opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}"; \
|
echo 'opcache.max_wasted_percentage=${PHP_OPCACHE_MAX_WASTED_PERCENTAGE}'; \
|
||||||
echo 'opcache.interned_strings_buffer=16'; \
|
echo 'opcache.interned_strings_buffer=16'; \
|
||||||
echo 'opcache.fast_shutdown=1'; \
|
echo 'opcache.fast_shutdown=1'; \
|
||||||
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
} > $PHP_INI_DIR/conf.d/opcache-recommended.ini; \
|
||||||
@ -119,37 +119,26 @@ RUN { \
|
|||||||
\
|
\
|
||||||
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
echo 'memory_limit=512M' > $PHP_INI_DIR/conf.d/memory-limit.ini
|
||||||
|
|
||||||
# Sentry
|
|
||||||
RUN if [ $(uname -m) = "x86_64" ]; then \
|
|
||||||
PLATFORM=$(uname -s); \
|
|
||||||
if [ "$PLATFORM" = "Linux" -o "$PLATFORM" = "Windows" -o "$PLATFORM" = "Darwin" ]; then \
|
|
||||||
mkdir -p /root/.local/bin; \
|
|
||||||
curl -sL https://sentry.io/get-cli/ | INSTALL_DIR=/root/.local/bin bash; \
|
|
||||||
fi \
|
|
||||||
fi
|
|
||||||
|
|
||||||
VOLUME /var/www/html
|
WORKDIR /var/www/html
|
||||||
|
|
||||||
# Define Monica version and expected SHA512 signature
|
# Define Monica version and expected SHA512 signature
|
||||||
ENV MONICA_VERSION v2.17.0
|
ENV MONICA_VERSION v2.17.0
|
||||||
ENV MONICA_SHA512 9e208f3aee15eb8ffcd33aa834fc2a4c07ef3396234132d76e2563e0c17c596e5f505aa6527625b13be1f564f8583c4bbd2a54c44d26f8e9c8418d9636c8720b
|
ENV MONICA_SHA512 9e208f3aee15eb8ffcd33aa834fc2a4c07ef3396234132d76e2563e0c17c596e5f505aa6527625b13be1f564f8583c4bbd2a54c44d26f8e9c8418d9636c8720b
|
||||||
ENV MONICA_SRC /usr/src/monica
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
RUN set -eu; \
|
RUN set -ex; \
|
||||||
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
|
||||||
echo "$MONICA_SHA512 *monica.tar.bz2" | sha512sum -c -; \
|
|
||||||
\
|
\
|
||||||
mkdir $MONICA_SRC; \
|
curl -fsSL -o monica.tar.bz2 "https://github.com/monicahq/monica/releases/download/${MONICA_VERSION}/monica-${MONICA_VERSION}.tar.bz2"; \
|
||||||
tar -xf monica.tar.bz2 -C $MONICA_SRC --strip-components=1; \
|
echo "$MONICA_SHA512 monica.tar.bz2" | sha512sum -c -; \
|
||||||
|
\
|
||||||
|
tar -xf monica.tar.bz2 -C /var/www/html --strip-components=1; \
|
||||||
rm monica.tar.bz2; \
|
rm monica.tar.bz2; \
|
||||||
\
|
\
|
||||||
cp $MONICA_SRC/.env.example $MONICA_SRC/.env; \
|
cp /var/www/html/.env.example /var/www/html/.env; \
|
||||||
chown -R www-data:www-data $MONICA_SRC
|
chown -R www-data:www-data /var/www/html
|
||||||
|
|
||||||
COPY upgrade.exclude \
|
|
||||||
/usr/local/share/
|
|
||||||
COPY entrypoint.sh \
|
COPY entrypoint.sh \
|
||||||
queue.sh \
|
queue.sh \
|
||||||
cron.sh \
|
cron.sh \
|
||||||
|
|||||||
@ -1,9 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# return true if specified directory is empty
|
set -Eeuo pipefail
|
||||||
directory_empty() {
|
|
||||||
[ -z "$(ls -A "$1/")" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# wait for the database to start
|
# wait for the database to start
|
||||||
waitfordb() {
|
waitfordb() {
|
||||||
@ -31,26 +28,9 @@ waitfordb() {
|
|||||||
|
|
||||||
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
||||||
|
|
||||||
MONICASRC=/usr/src/monica
|
|
||||||
MONICADIR=/var/www/html
|
MONICADIR=/var/www/html
|
||||||
ARTISAN="php ${MONICADIR}/artisan"
|
ARTISAN="php ${MONICADIR}/artisan"
|
||||||
|
|
||||||
# Update application sources
|
|
||||||
echo "Syncing sources..."
|
|
||||||
if [ "$(id -u)" = 0 ]; then
|
|
||||||
rsync_options="-rlDog --chown www-data:www-data"
|
|
||||||
else
|
|
||||||
rsync_options="-rlD"
|
|
||||||
fi
|
|
||||||
rsync $rsync_options --delete --exclude-from=/usr/local/share/upgrade.exclude $MONICASRC/ $MONICADIR/
|
|
||||||
|
|
||||||
for dir in storage; do
|
|
||||||
if [ ! -d "$MONICADIR/$dir" ] || directory_empty "$MONICADIR/$dir"; then
|
|
||||||
rsync $rsync_options --include "/$dir/" --exclude '/*' $MONICASRC/ $MONICADIR/
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "...done!"
|
|
||||||
|
|
||||||
# Ensure storage directories are present
|
# Ensure storage directories are present
|
||||||
STORAGE=${MONICADIR}/storage
|
STORAGE=${MONICADIR}/storage
|
||||||
mkdir -p ${STORAGE}/logs
|
mkdir -p ${STORAGE}/logs
|
||||||
@ -86,4 +66,4 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then
|
|||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec $@
|
exec "$@"
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
/storage
|
|
||||||
@ -28,8 +28,7 @@ RUN set -eu; sed -ri -e \"s!/var/www/html!\\\${APACHE_DOCUMENT_ROOT}!g\" /etc/ap
|
|||||||
[fpm-alpine]=''
|
[fpm-alpine]=''
|
||||||
)
|
)
|
||||||
|
|
||||||
label="LABEL maintainer=\"Alexis Saettler <alexis@saettler.org> (@asbiin)\" \\\\\\n\
|
label="LABEL org.opencontainers.image.authors=\"Alexis Saettler <alexis@saettler.org>\" \\\\\\n\
|
||||||
org.opencontainers.image.authors=\"Alexis Saettler <alexis@saettler.org>\" \\\\\\n\
|
|
||||||
org.opencontainers.image.title=\"MonicaHQ, the Personal Relationship Manager\" \\\\\\n\
|
org.opencontainers.image.title=\"MonicaHQ, the Personal Relationship Manager\" \\\\\\n\
|
||||||
org.opencontainers.image.description=\"This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you.\" \\\\\\n\
|
org.opencontainers.image.description=\"This is MonicaHQ, your personal memory! MonicaHQ is like a CRM but for the friends, family, and acquaintances around you.\" \\\\\\n\
|
||||||
org.opencontainers.image.url=\"https://monicahq.com\" \\\\\\n\
|
org.opencontainers.image.url=\"https://monicahq.com\" \\\\\\n\
|
||||||
@ -101,6 +100,4 @@ for variant in apache fpm fpm-alpine; do
|
|||||||
for file in entrypoint cron queue; do
|
for file in entrypoint cron queue; do
|
||||||
cp docker-$file.sh $variant/$file.sh
|
cp docker-$file.sh $variant/$file.sh
|
||||||
done
|
done
|
||||||
|
|
||||||
cp upgrade.exclude $variant/
|
|
||||||
done
|
done
|
||||||
|
|||||||
@ -1 +0,0 @@
|
|||||||
/storage
|
|
||||||
Loading…
Reference in New Issue
Block a user