diff --git a/.gitignore b/.gitignore index 0365be7..9711dcd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store -*.log -*~ -volume/* -conf/docker-compose.override.yml + +/conf/env/*.env +/volume/* +!/volume/www +/volume/www/**/conf/nginx.conf \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..afecacd --- /dev/null +++ b/Makefile @@ -0,0 +1,55 @@ + +CLIENT=tt-nextcloud + +DOCKERCOMPOSE := $(shell command -v docker-compose 2> /dev/null) +USAGE := Usage: make ENV={prod|preprod|dev} {docker-build|docker-start|docker-stop|docker-restart} + +ifndef DOCKERCOMPOSE +$(error docker-compose is not available) +endif + +ifndef ENV +$(info Environment variable is not set) +$(info $(USAGE)) +$(error Exiting) +endif + +DC_OVERRIDE := $(shell test -e conf/docker-compose.override.yml && echo "--file conf/docker-compose.override.yml") +DC_OVERRIDE_ENV := $(shell test -e conf/docker-compose.$(ENV).yml && echo "--file conf/docker-compose.$(ENV).yml") + +DC=ENV=$(ENV) CLIENT=$(CLIENT) $(DOCKERCOMPOSE) --project-name "$(CLIENT)_$(ENV)" --file conf/docker-compose.yml $(DC_OVERRIDE) $(DC_OVERRIDE_ENV) + +default: + $(info $(USAGE)) + $(error Exiting) + +docker-build: + $(DC) build + $(DC) up -d + +docker-start: + $(DC) start + +docker-stop: + $(DC) stop + +docker-restart: docker-stop docker-start + +docker-rm: docker-stop + $(DC) rm + +config: + + @echo "Configuring docker for environment '$(ENV)'" + + @echo " --> Generating mysql auth file" + @cat conf/env/nextcloud-mysql.env | python -c "import sys; import string; v=sys.stdin.readline().split('MYSQL_ROOT_PASSWORD=')[1]; print(string.Template(open('conf/build/mysql/my.cnf').read()).substitute({'PASSWORD':v}))" | docker exec -i $(CLIENT).nextcloud-mysql.$(ENV) sh -c 'cat > /root/.my.cnf' + +db-backup: + @echo "Backing up database" + @mkdir -p backup/database/mysql + @docker exec --tty --interactive $(CLIENT).nextcloud-mysql.$(ENV) mysqldump -uroot database > backup/database/mysql/dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql + +db-restore: + @echo "Restoring db_restore.sql file to database" + @docker exec -i $(CLIENT).nextcloud-mysql.$(ENV) mysql -uroot database < database.sql diff --git a/conf/build/mysql/Dockerfile b/conf/build/mysql/Dockerfile new file mode 100644 index 0000000..5d3659f --- /dev/null +++ b/conf/build/mysql/Dockerfile @@ -0,0 +1,14 @@ +FROM mysql:5.7 + +ENV TERM=xterm +#ENV http_proxy 'http://192.168.64.1:8080/' + +RUN apt-get clean \ + && apt-get update \ + && apt-get install -y lsof mlocate nano less + +COPY mysql.cnf /etc/mysql/conf.d/ + +RUN apt-get clean \ + && rm -rf /var/lib/apt/lists/ \ + && updatedb diff --git a/conf/build/mysql/my.cnf b/conf/build/mysql/my.cnf new file mode 100644 index 0000000..a035560 --- /dev/null +++ b/conf/build/mysql/my.cnf @@ -0,0 +1,2 @@ +[client] +password=$PASSWORD diff --git a/conf/build/mysql/mysql.cnf b/conf/build/mysql/mysql.cnf new file mode 100644 index 0000000..2cbd736 --- /dev/null +++ b/conf/build/mysql/mysql.cnf @@ -0,0 +1,4 @@ + +[mysqld] + +innodb_file_per_table = true diff --git a/conf/docker-compose.dev.yml b/conf/docker-compose.dev.yml new file mode 100644 index 0000000..b037f66 --- /dev/null +++ b/conf/docker-compose.dev.yml @@ -0,0 +1,13 @@ +version: '3' + +services: + + nextcloud: + ports: + - "8080:8888" + restart: "no" + + nextcloud-mysql: + ports: + - "3306:3306" + restart: "no" diff --git a/conf/docker-compose.prod.yml b/conf/docker-compose.prod.yml new file mode 100644 index 0000000..6b63e83 --- /dev/null +++ b/conf/docker-compose.prod.yml @@ -0,0 +1,16 @@ +version: '3' + +services: + + nextcloud: + ports: + - "80:8888" + networks: + - default + - frontnginx_front + +networks: + default: + driver: bridge + frontnginx_front: + external: true diff --git a/conf/docker-compose.yml b/conf/docker-compose.yml index a91ac01..e65925e 100644 --- a/conf/docker-compose.yml +++ b/conf/docker-compose.yml @@ -1,43 +1,24 @@ -version: '2' +version: '3' + services: # https://hub.docker.com/r/wonderfall/nextcloud/ - tt.nc: + nextcloud: image: wonderfall/nextcloud:12.0 - container_name: tt.nc - expose: - - "8888" - links: - - "tt.nc_mysql_db" - depends_on: - - "tt.nc_mysql_db" - external_links: - - "tt.front" + container_name: ${CLIENT}.nextcloud.${ENV} + env_file: env/nextcloud.env volumes: - - /home/docker/nextcloud/volume/nextcloud/data:/data - - /home/docker/nextcloud/volume/nextcloud/config:/config - - /home/docker/nextcloud/volume/nextcloud/apps2:/apps2 - - /home/docker/nextcloud/volume/nextcloud/themes:/nextcloud/themes - environment: - - UPLOAD_MAX_SIZE=100M - - DB_TYPE=mysql - - DB_NAME=nextcloud - - DB_USER=nextcloud - - DB_PASSWORD=*u;8k7W