Getting started with Laradock on Mac - docker

I'm just getting started with learning Laravel, as well as taking my first dive into Docker. I've taken the time to understand what Docker is and (more or less) how it works, and have also set up Docker Native on my Mac (Sierra).
I'm following along with the documentation at: http://laradock.io/getting-started/, but am a bit confused on how to proceed. The current version of Laradock is v5 which has a different setup to previous versions. I'd like to maintain a different docker environment for each project, and as per the documentation:
Follow these steps if you want a separate Docker environment for each project
So I proceeded with the section titled A.2) Don’t have a PHP project yet, where it mentions that the folder should look like:
+ laradock
+ project-z
So in my home directory I have a general Dev folder, and inside that I have a Laravel folder. So in ~/Dev/Laravel/ do I clone the Laradock git repo, and then alongside it (it being the laradock folder that is created) create my projects? So by my understanding I will therefore end up with:
~/Dev/Laravel/laradock
~/Dev/Laravel/project-1
~/Dev/Laravel/project-2
~/Dev/Laravel/project-...
If so, then this does not seem to be a separate Docker environment for each project.
Or should I instead go the route of creating a new empty Laravel project first and then clone the Laradock git repo into that?
I know this a very noobie question, but I'm unsure on how to proceed. Any help is humbly welcome!
Note: I have homebrew, composer and PHP7 already installed on my Mac.

If you want a separate Docker environment for each project, clone the Laradock repo inside each project directory. Your directory structure should look like:
+ project-a
+ laradock-a
+ project-b
+ laradock-b
Alternatively, if you want a single Docker environment for all your projects, your directory structure should look like:
+ laradock
+ project-1
+ project-2

I'd recommend to go with adding laradock as a submodule to an existing laravel app's folder with command: git submodule add https://github.com/Laradock/laradock.git first.
You have to initialize Git first ofc to do that.
To be concrete, you need to see a folder structure like this:

Related

Not a valid editable requirement. It should either be a path to a local project or a VCS URL

I have been using open-EDX (LMS) - (Juniper Version) Devstack Installation for Ubuntu 18.04 (which uses Docker Containers). I recently git cloned edx-proctoring into the place where I am using Devstack such that my folder structure would be like:
openEDX/credentials (or) devstack (or) edx-platform (or) edx-proctoring ....etc......
Now, I need to Install the cloned folder into my pre-existing devstack development. I am using these instructions:
https://github.com/edx/edx-proctoring/blob/master/docs/developing.rst
I am stuck in the Sub-section: Install the proctoring package into edx-platform in the container, for both LMS and Studio
Under Section:
How do I develop on edx-proctoring?
I provided the correct path for the git-cloned folder inside private.txt file.
Now, after entering into make lms-shell, when I am trying to call paver install_prereqs
it is giving me this error:
ERROR: /folder-path/ is not a valid editable requirement. It should either be a path to a local project or a VCS URL (beginning with svn+, git+, hg+, or bzr+).
No matter what path I give (like via root folder, via absolute path) the same error is repeating.
I am out of solutions. I would really appreciate suggestions and help.
Thank You.

Same VSCode-Settings for the whole crew?

We want to have the same VSCode settings for the whole crew of developers. Also it would be fine to have a oneline command to tear VSCode down and restart it from scratch with predefined settings and plugins so that you do not have to worry about trying out plugins and getting beck to the known state. Kind of Config-as-Code for VSCode.
I already found:
https://code.visualstudio.com/docs/editor/extension-gallery#_command-line-extension-management
https://github.com/microsoft/vscode-dev-containers
https://marketplace.visualstudio.com/items?itemName=Shan.code-settings-sync&ssr=false#qna
https://github.com/gantsign/ansible-role-visual-studio-code-extensions
https://code.visualstudio.com/docs/remote/containers
https://github.com/gantsign/ansible-role-visual-studio-code
But non of these provides a good solution to me
We are using Mac and Windows machines and develop most of the time locally (not remotely in the cloud or the like).
I imagine like having a script like
.... projectname up
or
.... projectname reset
(or
.... projectname down)
to receive/reset the configured settings and newest plugins that have been configured for the project.
Have any ideas or use a similar solution already?
After doing a lot of research, playing with Docker, Ansible and so on... it seems that although I excluded it at first the plugin Settings Sync Plugin from Shan Khan is the way to go. It has round about 1 million installs!
Only dependency - you need a GitHub account to host your configs. That is what held me back at first - but it should be not that much of a problem to get one for everyone in the team and connect it to like a company-github-account.
Copy the files settings.json and keybindings.json to your target machine(s) to copy the settings. You can find those files here:
Win: ~\AppData\Roaming\Code\User
Mac: ~/Library/Application Support/Code/User/
Linux: ~/.config/Code/User
You can copy extentions from ~/.vscode/extensions or C:\Users\username\.vscode\extensions from linux/mac or windows respectively.
FalcoGer's answer should explain how to copy the files in a way VS Code will pick them up. If you only need to copy the config files once, this solution would be fine.
If you need to "sync" these config files on a regular basis, I would advise to create a Git repository where all config files will be stored.
When cloning the repo to local machines, you can symlink the files to the config destinations (see FalcoGer's anwser). Then when you need to "sync", you only have to run git pull and restart VS Code to apply the changes.
For your other script-related question, you could create a CLI for this. Python would be the most friendly way to do this. You can find an example here.

Where is GitLab installed on Ubuntu 14.04?

GitLab was installed by following instructions at https://about.gitlab.com/downloads/ on Ubuntu Server 14.04 but I can't find the install directory. It's commonly said to be in /home/git/ or /home/gitlab/ but neither exist.
I need to find the install directory so I can setup SMTP (RE https://gist.github.com/petermanser/6117494) and migrate existing repositories into GitLab.
Does anyone know where GitLab would be installed on Ubuntu Server 14.04 if not /home/git/ or /home/gitlab/?
Config files are in etc/gitlab
Data is stored in /var/opt/gitlab
Thanks to Bjorn for finding the locations and Pavel S for providing cat /etc/passwd | grep git for finding the home directory of a given user!
To find a user's home directory do
$ cd ~git
you will be in that users directory.
:D
There is a Directory structure section in the official README.md file of Omnibus-GitLab repo:
Omnibus-gitlab uses four different directories.
/opt/gitlab holds application code for GitLab and its dependencies.
/var/opt/gitlab holds application data and configuration files that
gitlab-ctl reconfigure writes to.
/var/log/gitlab contains all log data generated by components of
omnibus-gitlab.
/etc/gitlab holds configuration files for omnibus-gitlab. These are
the only files that you should ever have to edit manually.
But, if you install the GitLab alone from source (rarely, but useful for unsupported systems like *BSD). Then the GitLab installation location will be different, and it is described in this official doc.

is symfony system wide?

i have a directory with some .php files in it...do i need to install symfony in that directory so that i can run symfony commands from that directory?? i tried: pear channel-discover pear.symfony-project.com
and got:
Channel "pear.symfony-project.com" is already initialized
the i tried: pear install symfony/symfony
and got:
WARNING: configuration download directory "/build/buildd/php5-5.3.2/pear-build-download" is not writeable. Change download_dir config variable to a writeable dir to avoid this warning
Cannot install, php_dir for channel "pear.symfony-project.com" is not writeable by the current user
how do i fix this please? must i run it as sudo??
thanks
If I remember well, Symfony is "system-wide" if installed through PEAR (like you are trying to do).
Now it is recommended by the manual to do a "standalone" install through SVN. See http://www.symfony-project.org/gentle-introduction/1_4/en/03-Running-Symfony
As well, the sandbox will bring a "standalone" installation of Symfony (you will have to be in the project root directory to be able to run the symfony commands)
EDIT
Example of quick install using SVN:
mkdir /path/to/symfony
cd /path/to/symfony
svn checkout http://svn.symfony-project.com/tags/RELEASE_1_4_0 .
but it should be better to follow the manual and configure the external SVN sources.
I run servers where I have applications that use different versions of symfony simultaneously. I found it much easier to deal with the SVN checkout than the PEAR insteall.
So what I've done is do an SVN checkout of each revision that I need
into it's own folder. In my case i check them out to
/usr/share/symfony/(version)
Then I configure the ProjectConfiguration.class.php to reference whatever version is needed, using the line:
require_once '/usr/share/symfony/1.x.x/lib/autoload/sfCoreAutoload.class.php';
If I need to switch to a different symfony version, I can just change that config.
That is, assuming all my code is compatible with that version

git clone problem

i have create clone of project on local machine with
git clone git#github.com:test/abc.git
Now i want to deploy my project on my ubuntu server .
so i have created a script which install git on my ubuntu server.
And now i want to deploy my rails project on server.
like git clone git#github.com:test/abc.git but i have not set ssh key on my server.
Is there any way i can create clone without set up ssh key on my server.
Is compulsotion that we have to create to ssh each on every server?
What if i have 20 server ? i need to set up ssh key for every server to clone?
Is there any way just ask the password than it will create a clone?
Or any other way?
You can use the read-only version. Next to the name of your repository you can select the http protocol. This url can be used without ssh key. If it is a private repository you'll need to add your username to the url.
$ git clone http://myname#github.com:test/abc.git
Initialized empty Git repository in /Users/myname/Projects/abc/.git/
password:
Then you type your password and a bit later you have your clone. A disadvantage is that you need to enter your password if you use a private repo.
Although I fail to see the problem of adding a few ssh-keys. If you really need to deploy to 20 servers you might consider thinking of using a packaging method with good OS support for automatic updating.
It is a mistake to try to use a configuration management tool in order to deploy an installation. Do you really intend to update the code from each of those 20 systems? Why then are you granting them write access to the code?
Create a tarball or use whatever package management systems are available in the language you are developing in (e.g. in Perl, you could use Dist::Zilla, Module::Install or ExtUtils::MakeMaker).
We created a php script which built RPMs (and Using Alien also built DEBs) for updating our 200+ machine fleet. As a url like "http://repo/fetch/rpm/" was called a script checked if there had been a new git tag inserted in package_name repository and if so use an RPM template we created on a per repo basis (typically put in .build/rpm.spec) to build the RPM, save it to a local cache directory and read the contents out as a file header.
I realize for your application that won't work since you're using GitHub - but it's just an idea for those who have their own remote repositories. A cron on the boxes would query once a day those URLs and run rpm -Uvh on the output.
For your instance it might be wise to tarball each release and either put that in a public accessible URL or create a script to rsync it to each server + exec
If you're deploying rails projects, you should check out Capistrano - http://www.capify.org/index.php/Getting_Started

Resources