From f61547aace97e81492605f5658406ab59574521a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81bastien=20STOLZ?= Date: Thu, 21 Dec 2017 23:01:44 +0100 Subject: [PATCH] merge from feat docker refactor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit commit 1c7f70e5790f815f382bf4c4b2ac5f5d361dbbf1 Author: Sébastien STOLZ Date: Thu Dec 21 23:01:16 2017 +0100 change mysql container name commit 622f42e9b9ff1cab01acb192cfab9e3d27cd0b51 Author: Sébastien STOLZ Date: Thu Dec 21 22:57:42 2017 +0100 port conf modification commit 186d94a7ec84341049ea6baae55e9e33abad9b01 Author: Sébastien STOLZ Date: Tue Dec 19 17:27:38 2017 +0100 Increase Makefile readability commit b7a01bbeb365780ad303d3d5f5ee74bcb6fb364b Author: Sébastien STOLZ Date: Tue Dec 19 17:27:21 2017 +0100 Change backup/restore filename strategy commit 6ffa535de015f427b739fd00bb9ec963b9cc0235 Author: Sébastien STOLZ Date: Tue Dec 19 16:33:48 2017 +0100 refactor --- .gitignore | 9 +++--- Makefile | 56 +++++++++++++++++++++++++++++++++++ conf/build/mysql/Dockerfile | 14 +++++++++ conf/build/mysql/my.cnf | 2 ++ conf/build/mysql/mysql.cnf | 4 +++ conf/docker-compose.dev.yml | 13 ++++++++ conf/docker-compose.prod.yml | 14 +++++++++ conf/docker-compose.yml | 49 ++++++++++-------------------- conf/env/sample/mysql.env | 4 +++ conf/env/sample/nextcloud.env | 8 +++++ 10 files changed, 135 insertions(+), 38 deletions(-) create mode 100644 Makefile create mode 100644 conf/build/mysql/Dockerfile create mode 100644 conf/build/mysql/my.cnf create mode 100644 conf/build/mysql/mysql.cnf create mode 100644 conf/docker-compose.dev.yml create mode 100644 conf/docker-compose.prod.yml create mode 100644 conf/env/sample/mysql.env create mode 100644 conf/env/sample/nextcloud.env 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..d5a49d6 --- /dev/null +++ b/Makefile @@ -0,0 +1,56 @@ + +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/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).mysql.$(ENV) sh -c 'cat > /root/.my.cnf' + +db-backup: + @echo "Backing up database" + @mkdir -p backup/ + @docker exec --tty --interactive $(CLIENT).mysql.$(ENV) mysqldump -uroot database > backup/mysql_dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql + +db-restore: + @echo "Restoring file to database (backup/mysql.sql)" + @docker exec -i $(CLIENT).mysql.$(ENV) mysql -uroot database < backup/mysql.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..17c3222 --- /dev/null +++ b/conf/docker-compose.dev.yml @@ -0,0 +1,13 @@ +version: '3' + +services: + + nextcloud: + ports: + - "8888:8888" + restart: "no" + + 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..7d88e8c --- /dev/null +++ b/conf/docker-compose.prod.yml @@ -0,0 +1,14 @@ +version: '3' + +services: + + nextcloud: + 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..b061535 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