From abbb90e0b065477eb19142805d510eda91d5fa38 Mon Sep 17 00:00:00 2001 From: Dev khadka Date: Fri, 8 Jun 2018 22:22:46 +0545 Subject: [PATCH] Testing for creating configurable docker file for development and production environment --- Dockerfile | 13 ++++++++- docker-compose.yaml | 4 +-- dockerbuild.sh | 61 ++++++++++++++++++++++++++++++++++++++++ dockerdeploy.sh | 8 ++++++ entrypoint.sh | 68 +++++++++++++++++++++++++-------------------- id_rsa | 27 ++++++++++++++++++ project/.gitignore | 12 -------- test.sh | 0 8 files changed, 148 insertions(+), 45 deletions(-) create mode 100644 dockerbuild.sh create mode 100644 dockerdeploy.sh create mode 100644 id_rsa delete mode 100644 project/.gitignore create mode 100644 test.sh diff --git a/Dockerfile b/Dockerfile index 05fd502..d198233 100755 --- a/Dockerfile +++ b/Dockerfile @@ -35,8 +35,19 @@ ENV APACHE_LOCK_DIR /var/lock/apache2 ADD entrypoint.sh /root/entrypoint.sh RUN chmod 777 /root/entrypoint.sh -ENTRYPOINT /root/entrypoint.sh +ARG BUILD_TYPE=PROD +ARG PROJECT_DIR=project +ENV BUILD_TYPE $BUILD_TYPE + + +#RUN if [ $BUILD_TYPE="PROD" ]; then echo "project.conf"; LARAVEL_PROJECT_DIR="project.conf"; else echo "project"; LARAVEL_PROJECT_DIR="project"; fi + +RUN echo $PROJECT_DIR + +ADD $PROJECT_DIR /var/www/html/project + +ENTRYPOINT [ "/bin/bash", "/root/entrypoint.sh", "entrypoint" ] EXPOSE 80 diff --git a/docker-compose.yaml b/docker-compose.yaml index f7a79a9..b90c049 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -15,7 +15,7 @@ services: - webnet web: # replace username/repo:tag with your name and image details - image: laravelapache + image: laravelapache-dev deploy: replicas: 1 #restart_policy: @@ -25,7 +25,7 @@ services: cpus: "0.5" memory: 2048M volumes: - - "/Volumes/Projects/Docker/LaravelApache/project:/var/www/html/project" + - "${PWD}/project:/var/www/html/project" ports: - "80:80" - "2222:22" diff --git a/dockerbuild.sh b/dockerbuild.sh new file mode 100644 index 0000000..d13695c --- /dev/null +++ b/dockerbuild.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +#This script calls the "docker build" command for development or production environment base on parameter passed +#For development environment it sends build argument "PROJECT_DIR=project" which will be mapped as application directory in container. Any changes in project directory is reflected in container without doing docker build again. +#For production environment we want project directory to be included in docker image file so we send "PROJECT_DIR=project.conf" where project.conf is a random file + +#Rather then sending build argument to docker build file it may be better to change docker file it self with this script. Also we need to change docker-compose.yaml not to map project folder as volume. + + +dev_build_args=("BUILD_TYPE=dev" + "PROJECT_DIR=project"); +prod_build_args=("BUILD_TYPE=prod" + "PROJECT_DIR=project.conf"); + +while getopts 't:e:' opt; do + case $opt in + t) tag="$OPTARG" ;; + e) eenv="$OPTARG";; + *) exit 1 ;; + esac +done + + +if [ -z $tag ] || [ -z $eenv ]; then + echo "Please provide parameters"; + echo "-t = docker build tag"; + echo "-e = env, either 'dev' or 'prod'"; + exit 1; +else + echo "parameters are good"; +fi + +if [ "dev" == $eenv ]; then + build_args=(${dev_build_args[@]}); +elif [ "prod" == $eenv ]; then + build_args=(${prod_build_args[@]}) +else + echo "Please give valid option, either 'prod' or 'dev'"; + exit 1; +fi + + +cmd="docker build -t $tag "; + +echo ${dev_build_args[@]}; +for arg in "${build_args[@]}"; +do + cmd+="--build-arg \"$arg\" "; + echo $arg; +done + +cmd+="." + +echo "Running: " $cmd; + + +eval $cmd; + + + + diff --git a/dockerdeploy.sh b/dockerdeploy.sh new file mode 100644 index 0000000..e5051c7 --- /dev/null +++ b/dockerdeploy.sh @@ -0,0 +1,8 @@ +#!/bin/bash +if [ $1=="dev" ]; then + +elif [ $1=="prod" ]; + +else + echo "Please give valid option, either 'prod' or 'dev'"; +fi; \ No newline at end of file diff --git a/entrypoint.sh b/entrypoint.sh index 81f3123..c888388 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -1,35 +1,38 @@ +#!/bin/bash # Don't remove, this command is needed to start ssh server when docker is started /usr/sbin/sshd; -cd /var/www/html/project; -# Creates laravel project if doesn't exists already -if [ -f composer.json ]; then - echo "Laravel project exists"; - if [ -d vendor ]; then - echo "Vendor folder exists not installing composer packages."; - else - echo "Install composer packages"; - composer install -vv; - fi -else - echo "Laravel project doesn't exist, creating new ..."; - composer -vvv create-project laravel/laravel /var/www/html/project --prefer-dist; -fi - - -php artisan migrate; - -# Install Node dependencies from package.json file if exists -if [ -f /var/www/html/project/package.json ]; then - if [ -d /var/www/html/project/node_modules ]; then - echo "Node modules already installed"; - else - echo "Install node modules"; - npm --prefix /var/www/html/project install /var/www/html/project; - fi -else - echo "No package.json file"; -fi + +echo $BUILD_TYPE; +echo $1; + +# cd /var/www/html/project; +# # Creates laravel project if doesn't exists already +# if [ -f composer.json ]; then +# echo "Laravel project exists"; +# if [ -d vendor ]; then +# echo "Vendor folder exists not installing composer packages."; +# else +# echo "Install composer packages"; +# composer install -vv; +# fi +# else +# echo "Laravel project doesn't exist, creating new ..."; +# composer -vvv create-project laravel/laravel /var/www/html/project --prefer-dist; +# fi + + +# # Install Node dependencies from package.json file if exists +# if [ -f package.json ]; then +# if [ -d node_modules ]; then +# echo "Node modules already installed"; +# else +# echo "Install node modules"; +# npm install; +# fi +# else +# echo "No package.json file"; +# fi # make following folders accessible to apache @@ -37,7 +40,11 @@ chgrp -R www-data /var/www/html/project/storage; chgrp -R www-data /var/www/html/project/bootstrap/cache; chmod -R 777 /var/www/html/project/storage; -echo "Apache server is running ..., browser your project using 'localhost' "; +# echo "Running migration..."; +# php artisan migrate; + + +echo "Apache server is running ..., browse your project using 'localhost' "; #Launch apache in the foreground #We do this in the forground so that Docker can watch #the process to detect if it has crashed @@ -46,3 +53,4 @@ apache2 -DFOREGROUND; + diff --git a/id_rsa b/id_rsa new file mode 100644 index 0000000..7fa7a40 --- /dev/null +++ b/id_rsa @@ -0,0 +1,27 @@ +-----BEGIN RSA PRIVATE KEY----- +MIIEpAIBAAKCAQEAzEh+bqhiC8ghBeDgvE/Y3pfA9CzK64MXodF5GhFSZK0pqXel +jzZzmKT+cFKGeFLgWx3JgHzDURpHbsUjxG144iuUNKIf9jkDC2ZxPIg/UGw3fM64 +8rhJscLmPbsq8ceygwRz/2eW5QVwZEbLZubR/G48ry2ArU4EzddTiBKknvlmoWAM +xre0fkPLPUr48hnSK0srOCChTk+RkaNsZK1P+HQnlqJrjs33Y0y7BkUDmjgILUyv +lpTi8YvX6gniccFCG3krywOXmQowSR/H2+IYaD8Kuhz1YIIRbRHvWhk4TkHjtjLH +uF0aELESfLKpgrnVrRJ0gS6mwj+t0aPuz4Zl1QIDAQABAoIBAHrpg2kBVzzPhU8M +Jywmvs3vcOF5sf5SOf3bE4pjsbdxmQemPa8VjCfj3lOm09HBy8wG+B6e8sXxkdlM +NGETnRA4OEwS4Dg9xV8unCNXtwCknB40I4Om7nBOXEn4O7aN+RJrs3+QzHGv/BfZ +oLihWOcRTOH59tpPfwR68n+E+BfN0v5/HOeM6hRtfmU3wNXmt0T6QJHRe0Ecv3Yl +Rc2c8H57Fs1PgtH8NdWcxud7CsNPourgU90jj8x1FKdupWfN8TgchY3tvGrejxYq +gLnwXBIihILXgOtr12UT1B4FYH8bjGsphzWCOEGQLkXgbnMbdia+SYGICHwb/sek +eXhOC2ECgYEA/jbQKZsO74qXA7tj/FXoxjZ6GrblZsLIzqFErNDgy/8eRRyURD9i +co64pywp00DYz6FnwrryaSdU8BMEiMM9futzm94rnedeXjTOquFebkR2piRsc8Nu +pHnA//MjnAD8klP16s1SO8smai7nar6mrvlmfgfKppYkhXWB8SSdVLsCgYEAzbfi +ImMd4LrOXVRdeAdkvi6PsOnR+GlnSJt5Nfnj5lJH+6nz31CsO/NBrOJaBMjDKQA2 +lETdIhE7uoVn2CjblQccEPlW1+5DT0UgtvHIIZRxxRoNWJ2rEJl+ycmUPMJ3rKV1 +TbuP8ljOv6LtjDvUju0V9zPWGCP5iQs+tIIxzq8CgYEAxse5si7rWOf3+hUXtALB +R+zlQepuKxJ4zwpPlwqmHR3aX5RfY5ZktstfHGluMyBr6L9/UUe5sfvtcOSOERsK +BSq7ddAeLxTyN5v3Vqtvma2zUWr92u+gnsAN6JYI7D3hQdKhYv82JEdQPIt8rX1y +/TNLr5UMI4MX/7vI5fUJiW0CgYBCf7uQxBuHZruIvdnNEA7Hz4NRe/QM6f2iIefn +w9Sgwl5Ugta7jHdwlazYNv9EZqV3noMGINCez5VQMQmlfWel3/t5nTAucu29NSpj +GPtJp5OzVD2WNLl0jznF/ux1S6Ol4oJt00Cv5XdHyWIin8CRRyB/nXkKqq5iV4k4 +jpGNLwKBgQCXPuHocYt2TQy5KGyT2wEtFcK1HyGj1SUcXBCtgRAGTo1mVCzFGT52 +RuXdLLgQsNshWTmjcM+36DTowPrKklnl97TBVbbQraDJta9msRuWPLOpV3E8ablJ +DBDo9iQ6YjwUd7q2VNIKAeGDAOIy5UnMJFZzTh8uTjhvQnJXQdQG1w== +-----END RSA PRIVATE KEY----- diff --git a/project/.gitignore b/project/.gitignore deleted file mode 100644 index b6a4b86..0000000 --- a/project/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -/node_modules -/public/hot -/public/storage -/storage/*.key -/vendor -/.idea -/.vagrant -Homestead.json -Homestead.yaml -npm-debug.log -yarn-error.log -.env diff --git a/test.sh b/test.sh new file mode 100644 index 0000000..e69de29 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy