Initial commit
This commit is contained in:
commit
e33ca873d1
|
|
@ -0,0 +1,62 @@
|
||||||
|
#
|
||||||
|
# Kcal application configuration.
|
||||||
|
#
|
||||||
|
|
||||||
|
APP_NAME=kcal
|
||||||
|
APP_ENV=production
|
||||||
|
APP_KEY=
|
||||||
|
APP_DEBUG=false
|
||||||
|
APP_URL=http://127.0.0.1/
|
||||||
|
APP_PORT=80
|
||||||
|
APP_PORT_SSL=443
|
||||||
|
APP_TIMEZONE=UTC
|
||||||
|
|
||||||
|
#
|
||||||
|
# Databases configuration.
|
||||||
|
#
|
||||||
|
|
||||||
|
DB_CONNECTION=mysql
|
||||||
|
DB_HOST=db
|
||||||
|
DB_PORT=3306
|
||||||
|
DB_DATABASE=kcal
|
||||||
|
DB_USERNAME=kcal
|
||||||
|
DB_PASSWORD=kcal
|
||||||
|
|
||||||
|
REDIS_HOST=redis
|
||||||
|
REDIS_PORT=6379
|
||||||
|
|
||||||
|
#
|
||||||
|
# Search configuration.
|
||||||
|
#
|
||||||
|
|
||||||
|
#SCOUT_DRIVER=null
|
||||||
|
|
||||||
|
#SCOUT_DRIVER=algolia
|
||||||
|
#ALGOLIA_APP_ID=
|
||||||
|
#ALGOLIA_SECRET=
|
||||||
|
|
||||||
|
SCOUT_DRIVER=elastic
|
||||||
|
ELASTIC_HOST=elasticsearch:9200
|
||||||
|
ELASTIC_PORT=9200
|
||||||
|
|
||||||
|
#
|
||||||
|
# Media (image storage) configuration.
|
||||||
|
#
|
||||||
|
|
||||||
|
MEDIA_DISK=local
|
||||||
|
|
||||||
|
#MEDIA_DISK=s3-public
|
||||||
|
#AWS_ACCESS_KEY_ID=
|
||||||
|
#AWS_SECRET_ACCESS_KEY=
|
||||||
|
#AWS_DEFAULT_REGION=
|
||||||
|
#AWS_BUCKET=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Misc. drivers and configuration.
|
||||||
|
#
|
||||||
|
|
||||||
|
BROADCAST_DRIVER=redis
|
||||||
|
CACHE_DRIVER=redis
|
||||||
|
QUEUE_CONNECTION=redis
|
||||||
|
SESSION_DRIVER=redis
|
||||||
|
SESSION_LIFETIME=120
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
.DS_Store
|
||||||
|
.env
|
||||||
|
.idea
|
||||||
|
docker-compose.override.yml
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright 2021 Christopher Charbonneau Wells
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
copy of this software and associated documentation files (the "Software"),
|
||||||
|
to deal in the Software without restriction, including without limitation
|
||||||
|
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||||
|
and/or sell copies of the Software, and to permit persons to whom the
|
||||||
|
Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included
|
||||||
|
in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||||
|
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
|
DEALINGS IN THE SOFTWARE.
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
# [kcal](https://github.com/kcal-app/kcal) for Docker!
|
||||||
|
|
||||||
|
[](https://hub.docker.com/r/kcalapp/kcal/builds)
|
||||||
|
[](https://hub.docker.com/r/kcalapp/kcal/tags?page=1&ordering=last_updated)
|
||||||
|
[](https://hub.docker.com/r/kcalapp/kcal)
|
||||||
|
[](https://hub.docker.com/r/kcalapp/kcal/tags?page=1&ordering=last_updated)
|
||||||
|
|
||||||
|
# :construction: **WORK IN PROGRESS** :construction:
|
||||||
|
|
||||||
|
This is a template repository for running [kcal](https://github.com/kcal-app/kcal)
|
||||||
|
with Docker Compose. Visit the main [kcal](https://github.com/kcal-app/kcal) repository
|
||||||
|
for more information about the application.
|
||||||
|
|
||||||
|
## 1. Clone
|
||||||
|
|
||||||
|
Clone this repo.
|
||||||
|
|
||||||
|
git clone https://github.com/kcal-app/kcal-docker.git
|
||||||
|
|
||||||
|
## 2. Create `.env` file.
|
||||||
|
|
||||||
|
cd kcal-docker
|
||||||
|
cp .env.example .env
|
||||||
|
|
||||||
|
## 3. Generate and add an `APP_KEY` to the `.env` file.
|
||||||
|
|
||||||
|
docker-compose run app php artisan key:generate --show
|
||||||
|
|
||||||
|
This command will output a suitable key. Copy the key value and add it to the
|
||||||
|
`APP_KEY` value in the `.env` file. This also a good time to review make other
|
||||||
|
changes to the `.env` file (e.g. set the `APP_TIMEZONE` and `APP_URL` values as
|
||||||
|
desired).
|
||||||
|
|
||||||
|
## 4. Launch! :rocket:
|
||||||
|
|
||||||
|
docker-compose up -d
|
||||||
|
|
||||||
|
## 5. Set up application.
|
||||||
|
|
||||||
|
docker-compose exec app php artisan optimize
|
||||||
|
docker-compose exec app php artisan migrate
|
||||||
|
docker-compose exec app php artisan elastic:migrate
|
||||||
|
|
||||||
|
## 6. Create initial user.
|
||||||
|
|
||||||
|
docker-compose exec app php artisan user:add --admin
|
||||||
|
|
@ -0,0 +1,89 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
image: kcalapp/kcal
|
||||||
|
container_name: kcal-app
|
||||||
|
restart: unless-stopped
|
||||||
|
tty: true
|
||||||
|
working_dir: /app
|
||||||
|
env_file: .env
|
||||||
|
volumes:
|
||||||
|
- 'app:/app'
|
||||||
|
- './etc/php/php.ini:/usr/local/etc/php/conf.d/local.ini'
|
||||||
|
networks:
|
||||||
|
- kcal
|
||||||
|
web:
|
||||||
|
image: nginx:alpine
|
||||||
|
container_name: kcal-web
|
||||||
|
restart: unless-stopped
|
||||||
|
tty: true
|
||||||
|
working_dir: /app
|
||||||
|
ports:
|
||||||
|
- '${APP_PORT:-80}:80'
|
||||||
|
- '${APP_PORT_SSL:-443}:443'
|
||||||
|
volumes:
|
||||||
|
- 'app:/app'
|
||||||
|
- './etc/nginx/conf.d/:/etc/nginx/conf.d/'
|
||||||
|
networks:
|
||||||
|
- kcal
|
||||||
|
depends_on:
|
||||||
|
- app
|
||||||
|
db:
|
||||||
|
image: mysql:8.0
|
||||||
|
container_name: kcal-db
|
||||||
|
restart: unless-stopped
|
||||||
|
tty: true
|
||||||
|
ports:
|
||||||
|
- '${DB_PORT:-3306}:3306'
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD:-kcal}'
|
||||||
|
MYSQL_DATABASE: '${DB_DATABASE:-kcal}'
|
||||||
|
MYSQL_USER: '${DB_USERNAME:-kcal}'
|
||||||
|
MYSQL_PASSWORD: '${DB_PASSWORD:-kcal}'
|
||||||
|
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
|
||||||
|
volumes:
|
||||||
|
- 'db-data:/var/lib/mysql/'
|
||||||
|
- './etc/mysql/my.cnf:/etc/mysql/my.cnf'
|
||||||
|
networks:
|
||||||
|
- kcal
|
||||||
|
elasticsearch:
|
||||||
|
image: 'elasticsearch:7.12.0'
|
||||||
|
container_name: kcal-elasticsearch
|
||||||
|
environment:
|
||||||
|
- xpack.security.enabled=false
|
||||||
|
- discovery.type=single-node
|
||||||
|
ulimits:
|
||||||
|
memlock:
|
||||||
|
soft: -1
|
||||||
|
hard: -1
|
||||||
|
nofile:
|
||||||
|
soft: 65536
|
||||||
|
hard: 65536
|
||||||
|
cap_add:
|
||||||
|
- IPC_LOCK
|
||||||
|
volumes:
|
||||||
|
- 'elasticsearch-data:/usr/share/elasticsearch/data'
|
||||||
|
ports:
|
||||||
|
- '${ELASTIC_PORT:-9200}:9200'
|
||||||
|
networks:
|
||||||
|
- kcal
|
||||||
|
redis:
|
||||||
|
image: 'redis:alpine'
|
||||||
|
container_name: kcal-redis
|
||||||
|
ports:
|
||||||
|
- '${REDIS_PORT:-6379}:6379'
|
||||||
|
volumes:
|
||||||
|
- 'redis-data:/data'
|
||||||
|
networks:
|
||||||
|
- kcal
|
||||||
|
networks:
|
||||||
|
kcal:
|
||||||
|
driver: bridge
|
||||||
|
volumes:
|
||||||
|
app: {}
|
||||||
|
db-data:
|
||||||
|
driver: local
|
||||||
|
elasticsearch-data:
|
||||||
|
driver: local
|
||||||
|
redis-data:
|
||||||
|
driver: local
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
[mysqld]
|
||||||
|
default-authentication-plugin = mysql_native_password
|
||||||
|
general_log = 1
|
||||||
|
general_log_file = /var/lib/mysql/general.log
|
||||||
|
secure-file-priv = NULL
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
root /app/public;
|
||||||
|
add_header X-Frame-Options "SAMEORIGIN";
|
||||||
|
add_header X-Content-Type-Options "nosniff";
|
||||||
|
index index.php;
|
||||||
|
charset utf-8;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php?$query_string;
|
||||||
|
gzip_static on;
|
||||||
|
}
|
||||||
|
|
||||||
|
location = /favicon.ico { access_log off; log_not_found off; }
|
||||||
|
location = /robots.txt { access_log off; log_not_found off; }
|
||||||
|
|
||||||
|
error_page 404 /index.php;
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
fastcgi_pass app:9000;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_param PATH_INFO $fastcgi_path_info;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\.(?!well-known).* {
|
||||||
|
deny all;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
upload_max_filesize=40M
|
||||||
|
post_max_size=40M
|
||||||
Loading…
Reference in New Issue