Best practice Magento dev environment, how do teams develop Magento?

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;







up vote
3
down vote

favorite
2












I'm trying to set up a dev environment for my team to work together on 1 Magento project. But I don't know if I should use a shared server with a Magento installation or if we should all install Magento locally and share a database/git repo ?










share|improve this question





























    up vote
    3
    down vote

    favorite
    2












    I'm trying to set up a dev environment for my team to work together on 1 Magento project. But I don't know if I should use a shared server with a Magento installation or if we should all install Magento locally and share a database/git repo ?










    share|improve this question

























      up vote
      3
      down vote

      favorite
      2









      up vote
      3
      down vote

      favorite
      2






      2





      I'm trying to set up a dev environment for my team to work together on 1 Magento project. But I don't know if I should use a shared server with a Magento installation or if we should all install Magento locally and share a database/git repo ?










      share|improve this question















      I'm trying to set up a dev environment for my team to work together on 1 Magento project. But I don't know if I should use a shared server with a Magento installation or if we should all install Magento locally and share a database/git repo ?







      magento2 best-practice






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Sep 7 at 8:50









      Prince

      6,4862934




      6,4862934










      asked Sep 7 at 8:03









      jonasG

      486




      486




















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          5
          down vote













          I don't think there is a silver bullet solution on this.

          All I can say is how we do it.

          We've setup a docker environment using the suite created by Fabrizio Balliano.

          We made some additional changes to it.



          • we added a sample data sql with some products that gets installed when the db container is created (using the /docker-entrypoint-initdb.d/ feature).

          • we created a make file that contains some wrappers for the docker commands because they are hard to remember. Example make ssh is an alias for @docker exec -it --user www-data magento.container.name.here bash in order to get cli access to the container. make uninstall will destroy the containers and cleanup after them. make install will create all containers and so on.

          This way, everyone has the same environment and the same settings (that can be matched to the live server).

          We needed at one point to add elasticsearch to the project. We just pulled up a docker image for elasticsearch and that's it. It got versioned and everyone had it at the next git pull.

          When a new person comes in the project they just git clone the repo, run make install and everything is set up.

          Draw backs:
          - it only works perfectly on linux. It can be made to work on mac (and maybe windows) but we did not bother.
          - it introduces dev dependencies like docker and gnu makefile.






          share|improve this answer





























            up vote
            1
            down vote













            We personally have installed Magento locally through Bitnami VM and we share a git repository. When we have to get the project into a production server we just clone the repo and the database.






            share|improve this answer




















            • we do like the bitnami VM because it's pretty performant and easy to set up, but won't we have problems with the database if we each made different changes to it? Or can we use version control on it?
              – jonasG
              Sep 7 at 8:52










            • Yes and no, it depends. Personally, we are 3 in our dev team, so if we need to upgrade the db locally because someone has made a change, he just shares it via Slack or shared folders and we upload it and change the local urls. It doesn't take more than 5 minutes and we don't do it that often. But of course if you have a 10/20 or even more, it might not be the best/suitable option.
              – Raül
              Sep 7 at 8:59










            Your Answer







            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "479"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: false,
            noModals: false,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f241260%2fbest-practice-magento-dev-environment-how-do-teams-develop-magento%23new-answer', 'question_page');

            );

            Post as a guest






























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            5
            down vote













            I don't think there is a silver bullet solution on this.

            All I can say is how we do it.

            We've setup a docker environment using the suite created by Fabrizio Balliano.

            We made some additional changes to it.



            • we added a sample data sql with some products that gets installed when the db container is created (using the /docker-entrypoint-initdb.d/ feature).

            • we created a make file that contains some wrappers for the docker commands because they are hard to remember. Example make ssh is an alias for @docker exec -it --user www-data magento.container.name.here bash in order to get cli access to the container. make uninstall will destroy the containers and cleanup after them. make install will create all containers and so on.

            This way, everyone has the same environment and the same settings (that can be matched to the live server).

            We needed at one point to add elasticsearch to the project. We just pulled up a docker image for elasticsearch and that's it. It got versioned and everyone had it at the next git pull.

            When a new person comes in the project they just git clone the repo, run make install and everything is set up.

            Draw backs:
            - it only works perfectly on linux. It can be made to work on mac (and maybe windows) but we did not bother.
            - it introduces dev dependencies like docker and gnu makefile.






            share|improve this answer


























              up vote
              5
              down vote













              I don't think there is a silver bullet solution on this.

              All I can say is how we do it.

              We've setup a docker environment using the suite created by Fabrizio Balliano.

              We made some additional changes to it.



              • we added a sample data sql with some products that gets installed when the db container is created (using the /docker-entrypoint-initdb.d/ feature).

              • we created a make file that contains some wrappers for the docker commands because they are hard to remember. Example make ssh is an alias for @docker exec -it --user www-data magento.container.name.here bash in order to get cli access to the container. make uninstall will destroy the containers and cleanup after them. make install will create all containers and so on.

              This way, everyone has the same environment and the same settings (that can be matched to the live server).

              We needed at one point to add elasticsearch to the project. We just pulled up a docker image for elasticsearch and that's it. It got versioned and everyone had it at the next git pull.

              When a new person comes in the project they just git clone the repo, run make install and everything is set up.

              Draw backs:
              - it only works perfectly on linux. It can be made to work on mac (and maybe windows) but we did not bother.
              - it introduces dev dependencies like docker and gnu makefile.






              share|improve this answer
























                up vote
                5
                down vote










                up vote
                5
                down vote









                I don't think there is a silver bullet solution on this.

                All I can say is how we do it.

                We've setup a docker environment using the suite created by Fabrizio Balliano.

                We made some additional changes to it.



                • we added a sample data sql with some products that gets installed when the db container is created (using the /docker-entrypoint-initdb.d/ feature).

                • we created a make file that contains some wrappers for the docker commands because they are hard to remember. Example make ssh is an alias for @docker exec -it --user www-data magento.container.name.here bash in order to get cli access to the container. make uninstall will destroy the containers and cleanup after them. make install will create all containers and so on.

                This way, everyone has the same environment and the same settings (that can be matched to the live server).

                We needed at one point to add elasticsearch to the project. We just pulled up a docker image for elasticsearch and that's it. It got versioned and everyone had it at the next git pull.

                When a new person comes in the project they just git clone the repo, run make install and everything is set up.

                Draw backs:
                - it only works perfectly on linux. It can be made to work on mac (and maybe windows) but we did not bother.
                - it introduces dev dependencies like docker and gnu makefile.






                share|improve this answer














                I don't think there is a silver bullet solution on this.

                All I can say is how we do it.

                We've setup a docker environment using the suite created by Fabrizio Balliano.

                We made some additional changes to it.



                • we added a sample data sql with some products that gets installed when the db container is created (using the /docker-entrypoint-initdb.d/ feature).

                • we created a make file that contains some wrappers for the docker commands because they are hard to remember. Example make ssh is an alias for @docker exec -it --user www-data magento.container.name.here bash in order to get cli access to the container. make uninstall will destroy the containers and cleanup after them. make install will create all containers and so on.

                This way, everyone has the same environment and the same settings (that can be matched to the live server).

                We needed at one point to add elasticsearch to the project. We just pulled up a docker image for elasticsearch and that's it. It got versioned and everyone had it at the next git pull.

                When a new person comes in the project they just git clone the repo, run make install and everything is set up.

                Draw backs:
                - it only works perfectly on linux. It can be made to work on mac (and maybe windows) but we did not bother.
                - it introduces dev dependencies like docker and gnu makefile.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Sep 7 at 9:33

























                answered Sep 7 at 8:42









                Marius♦

                159k26296633




                159k26296633






















                    up vote
                    1
                    down vote













                    We personally have installed Magento locally through Bitnami VM and we share a git repository. When we have to get the project into a production server we just clone the repo and the database.






                    share|improve this answer




















                    • we do like the bitnami VM because it's pretty performant and easy to set up, but won't we have problems with the database if we each made different changes to it? Or can we use version control on it?
                      – jonasG
                      Sep 7 at 8:52










                    • Yes and no, it depends. Personally, we are 3 in our dev team, so if we need to upgrade the db locally because someone has made a change, he just shares it via Slack or shared folders and we upload it and change the local urls. It doesn't take more than 5 minutes and we don't do it that often. But of course if you have a 10/20 or even more, it might not be the best/suitable option.
                      – Raül
                      Sep 7 at 8:59














                    up vote
                    1
                    down vote













                    We personally have installed Magento locally through Bitnami VM and we share a git repository. When we have to get the project into a production server we just clone the repo and the database.






                    share|improve this answer




















                    • we do like the bitnami VM because it's pretty performant and easy to set up, but won't we have problems with the database if we each made different changes to it? Or can we use version control on it?
                      – jonasG
                      Sep 7 at 8:52










                    • Yes and no, it depends. Personally, we are 3 in our dev team, so if we need to upgrade the db locally because someone has made a change, he just shares it via Slack or shared folders and we upload it and change the local urls. It doesn't take more than 5 minutes and we don't do it that often. But of course if you have a 10/20 or even more, it might not be the best/suitable option.
                      – Raül
                      Sep 7 at 8:59












                    up vote
                    1
                    down vote










                    up vote
                    1
                    down vote









                    We personally have installed Magento locally through Bitnami VM and we share a git repository. When we have to get the project into a production server we just clone the repo and the database.






                    share|improve this answer












                    We personally have installed Magento locally through Bitnami VM and we share a git repository. When we have to get the project into a production server we just clone the repo and the database.







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Sep 7 at 8:24









                    Raül

                    45913




                    45913











                    • we do like the bitnami VM because it's pretty performant and easy to set up, but won't we have problems with the database if we each made different changes to it? Or can we use version control on it?
                      – jonasG
                      Sep 7 at 8:52










                    • Yes and no, it depends. Personally, we are 3 in our dev team, so if we need to upgrade the db locally because someone has made a change, he just shares it via Slack or shared folders and we upload it and change the local urls. It doesn't take more than 5 minutes and we don't do it that often. But of course if you have a 10/20 or even more, it might not be the best/suitable option.
                      – Raül
                      Sep 7 at 8:59
















                    • we do like the bitnami VM because it's pretty performant and easy to set up, but won't we have problems with the database if we each made different changes to it? Or can we use version control on it?
                      – jonasG
                      Sep 7 at 8:52










                    • Yes and no, it depends. Personally, we are 3 in our dev team, so if we need to upgrade the db locally because someone has made a change, he just shares it via Slack or shared folders and we upload it and change the local urls. It doesn't take more than 5 minutes and we don't do it that often. But of course if you have a 10/20 or even more, it might not be the best/suitable option.
                      – Raül
                      Sep 7 at 8:59















                    we do like the bitnami VM because it's pretty performant and easy to set up, but won't we have problems with the database if we each made different changes to it? Or can we use version control on it?
                    – jonasG
                    Sep 7 at 8:52




                    we do like the bitnami VM because it's pretty performant and easy to set up, but won't we have problems with the database if we each made different changes to it? Or can we use version control on it?
                    – jonasG
                    Sep 7 at 8:52












                    Yes and no, it depends. Personally, we are 3 in our dev team, so if we need to upgrade the db locally because someone has made a change, he just shares it via Slack or shared folders and we upload it and change the local urls. It doesn't take more than 5 minutes and we don't do it that often. But of course if you have a 10/20 or even more, it might not be the best/suitable option.
                    – Raül
                    Sep 7 at 8:59




                    Yes and no, it depends. Personally, we are 3 in our dev team, so if we need to upgrade the db locally because someone has made a change, he just shares it via Slack or shared folders and we upload it and change the local urls. It doesn't take more than 5 minutes and we don't do it that often. But of course if you have a 10/20 or even more, it might not be the best/suitable option.
                    – Raül
                    Sep 7 at 8:59

















                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f241260%2fbest-practice-magento-dev-environment-how-do-teams-develop-magento%23new-answer', 'question_page');

                    );

                    Post as a guest













































































                    這個網誌中的熱門文章

                    How to combine Bézier curves to a surface?

                    Carbon dioxide

                    Why am i infinitely getting the same tweet with the Twitter Search API?