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