 Okay. Yeah, welcome for me also here and I hope you still have enough energy even so it's the last talk before lunch. I like first before we start to give a thought introduction so you know who's standing here. So I'm an information designer and developer at the agency here in Vienna. It's called Visualis. We're doing a lot of data visualizations and interactive applications, a lot of science communications. And so everything which has a big database and some, yeah. And there I do a lot of DevOps. So that's also why I'm talking today about Docker here. And I'm really into open source and open data. So I work with a lot of open source software and then also contributing there. And I also would like to know a bit about you before we start. So the first question I have is who of you heard of Docker before. Okay, that's good. Next question is who use Docker already. Okay, that's also really good. Who used Docker together with WordPress. Okay, so almost everybody who used Docker and who used already the WordPress image from Docker Hub. Okay, a bit less. So before we start some service announcement, if you have a Docker Hub account, there was some security breach yesterday. So if you know, this is what the Docker support just wrote in the morning. So if you have a Docker Hub account, please change your password. And if you made some auto builds, check if your repositories are still connected. So, but now I think we can start. And the schedule for today is I first would like to give you some thought introduction into Docker. And I know that most of you heard about it. So that's good, but also that everybody is on the same level then. Then I would like to start how can we use Docker with WordPress together and give you three best practice. First for development, then for testing. And at the end, also for some production running systems. And in the end, there will be also some link to my trip to top repository where you can download all the files I'm showing here with the slides and so on. So you don't need to make notes if you don't need to. Good. First thing. What is Docker. So Docker is a virtualization technology. Which is kind of based on containers. So if we have, you know, on the one hand, you know, on the left, you see Docker as a container-wise version. And on the other side, the traditional virtualization with the virtual machine. So the advantage of Docker is that you don't need to have the operation systems for each container. So you have still one operation system and Docker is kind of the connection layer between your between each of the containers. So you're saving a bit of performance. Because if you have several containers, you don't need to have, you know, an own operating system there. So therefore it's a bit easier. If you just look for by the numbers a bit, you know, what is what is Docker as a technology. So we have 80 billion container downloads. At least Docker.com says so. We have a lot of community work there. So there are over 200 meetups. So if you would like to get involved, I think there should be also some meetup near you. There are a lot of third-party projects over 10,000, 100,000, sorry, which are using Docker. And we also have a lot of Dockerized applications at Docker Hub. So I think it's a good time now to start using Docker because there's already a lot of information. There's a lot of community. So if you have some questions and so on, you can start. If you like to start this, it's also available on a lot of a lot of platforms. And this really grew in the past years. For example, it kind of started more on Linux based operation systems and platforms. But nowadays, it's usable on almost everything, even on Windows. And also on servers. And we have also some integrations for some cloud systems like AVS. So you can really use it on most of your platforms. Why do I use Docker? First of consistency because I really like to know what I'm working with, but it's really the same and that it's what I'm really defined. So it's really easy to reproduce it. So I really know when I kind of set it up, I really know what's inside. And it's also really easy to automate. So in my workflow, I use a lot for Docker containers in development, in testing and in production. And I really know that it's exactly the same in production what I'm testing on. And it's really easy to set up. So it really saves me a lot of time. Even so, in the beginning, it might be a bit longer to set it up. So if you don't, if you're maybe a bit scared about Docker because you might need to use a terminal for it, I will give you some hints and I hope that I can take you some of the fear that you can really use it. So if you installed it, there are some first things you can just try out with Docker version. You just check, okay, is it properly installed? What version? Is it really the version I want to run on my platform? And then you can just do with Docker run, hello world, just some example, which will, if it's not cached already downloaded and run. So in the last one I'd like to give you here is this Docker PS, which kind of lists all running containers. And I think there you can have a start to go on. We will then later have it here on a live show. So we see that it's have several containers, but how can we connect them properly and how can we kind of, you know, set up environments which are kind of putting all these containers together and also in a way that it's really easy for us to administrate and to set up. And one of the ways to do this is, for example, this Docker compose. It's kind of a technology which allows you to define this and to work really well. So you kind of set up a file where you set the things we will look into this now and then with these, yeah, you can just run it and also kind of put it down or even you just download the images. So it's really easy if you want to start kind of containers where you have a database, my SQL or another database, then you have a Wordpress container or maybe even some additional engine X proxy whatsoever. It's all defined in one file. You just write Docker compose up and everything starts. So it's kind of a really easy way. And this is then also the next thing because we have a lot of different images for running these containers. And there's a kind of official image for WordPress. When I started three years ago with Docker, I kind of made my own images for WordPress. But nowadays I really try to work with the official images because it's less work for me. And I also then know that it's really running and it's better tested. So on hub.docker.com you can kind of have the repository of all the images which are there. We see here that it's kind of the official one for a lot of different also platforms whatsoever. And the good thing is you have a lot of different variants you can work with. So first of all, you can choose the version you would like to download. You want to have 4.9 WordPress or you want to have the latest one or you want to have 5.1 or even a 5.1.1 you can directly define it. And so also then really easy update. You can also define for example if you have some plugins or themes which need to use a specific PHP version. You can also define it there. So you don't need to kind of work with different PHP versions installing and whatsoever. You just choose the version with the PHP version you would like to have. So that's really, really handy if you'd like to for example test some plugins or themes on a new PHP version. You just pull the new image with a new version. You can test it and if it doesn't work then you can just throw it away and without much effort. And you also have a version for the command line interface of WordPress. So it's in the official repository. So much talking. Let's go into the direct things. First thing is for development, I'd like to show you a setup with kind of three images. First one is the official WordPress image we just looked at. Then the Maria DB. So because I like to work with free and open software and I don't like Oracle. So and the PHP my admin because I think that's a good interface to start for development. So and this is how that a Docker compose file looks like. So now you see it even better. And I'd like to go with you through the lines so you can understand them. So first thing we need to do is to define what version of Docker compose. We are kind of with which style we are writing in. So now we're using version three. And then we kind of defining the services. So we're defining the containers we want to create. And the first thing we would like to do because what we do we need we need the database. So we need a database and we then write the image name which we found in the Docker hub. So we just looked it up and we want to use the version 10.4. So you just write then the image Maria DB 10.4. So in the next line what you want to do we want to do that the container restarts always when it stops. Because we would like to have it running all the time. This is for example if you have some special script or whatsoever which only needs to run once. When you for example start another container and so on. You can leave it out here but now we always need the database when it word process running. So the next thing is volumes because a container if we stop the container. Everything what was in the container is kind of deleted and lost. So if you want to keep data and for database data I think it's useful to keep it for the next time we started. We need to define the volume and we define the volume DB data. And we define it that it's kind of mounted in the container in this directory. So that everything which is in this directory and kind of created and set up and all the data of the Maria DB is kind of saved in this volume. So next time we start up this container again. It is connected to the volume again and we have all the data we saved in the database. So the next one is environmental configurations where we can define things which are included in the image. So we for example can set up my SQL root password. We can also define the database and the user with its password which should be created with the start of the container. So we don't need to then go and create it by ourselves by hand but when it starts it creates this. All these variables are kind of documented at Docker Hub. So if you want me to look it up under each image there they have written what the variables do and what can be defined and configured. So next thing is networks. Because we would like to put all the containers three containers we're doing would like of course that they are able to talk to each other. And therefore we put them in an each virtual network. Because of course the WordPress container needs to kind of communicate with the database but somebody from the outside does not need to connect to the database. So we kind of set up a virtual network which we kind of gave the name WPDef. So and that's the configuration for the database. So the same thing we do for PHP MyAdmin. Because for development issues it's really good to have you know this interface for the database. And so we kind of found this is the image. We also would like to have it running all the time and we say it depends on the database. It's also only useful if the database container is running. So we connected there and we also would need to kind of be able to use it in our browser. So we kind of define the ports from where we can get it. So the first one are our local ports. And the second one are the internal ports of the image. So the image has a standard HTTP port. And we kind of translate it into 8080 on our local machine here. So if you would like to then open this we just need to write localhost 8080 which we then see. So environmental variables are these. We say the database host is DB because this is the name of the container. We have the password we just defined here. And we put it into the same network. So second container done. Third container WordPress finally. So we first say again depends on the database we have the latest WordPress image. And we would like to translate translated to port 8000 on our local machine. So we also would like to have it running all the time. And we would like to mount the WP content folder from WordPress to a local folder on our machine. Because that's kind of the folder where we need to edit things, themes, plugins, everything. And that's also kind of the only folder which we need to edit. So that's what we kind of need to mount to the outside. Then we need to tell the WordPress container the database variables. And the last thing which we can give is we can give some specific WordPress variables. Because I said the only thing we can edit is the WP content folder. But what about the config? So in these variables you can set up all the things which are then loaded into the config file. I just have the example. So you can, for example, put database, the sol, the auth key, all these variables. You can turn on the debug mode. All these extra configurations you can put in there and then also easily copy and paste it. And then it automatically is loaded with the start of the container. Same thing. We put it into the same network or virtual network as the other two containers. And that's how we defined our containers. Services here. Next thing is we then need to kind of again say list all the networks we are using here. We have only this one. And we are using this volume which we had for the database data. So that's it. And you see it is a bit of work at the beginning. But you need to define it only once and then you can copy and paste it. So, and how do we do this now? So we just take our terminal and say, so Docker compose. So we see now this is the log file from what is happening. So I already before downloaded all the images. So that's why it's now a bit faster. If you first run it, it takes depending on the internet connection to download all the images. And yeah, and then we can kind of connect to it. We said 8080 is our PTP MyAdmin. And 8000 is our local WordPress installation. So, and of course we could just now go through with this and continue and put the things in. Yeah, but that's how we start the whole whole environment. So and the easy thing is if you say, okay, we need to stop it. And in this this way we just press control C. But otherwise we could also just write Docker compose down. So and everything is then turned off and removed. And for me, this is a really easy way of working also with several development environments and so on. And since we have here on the left side, you see we have this WP content folder. With all the plugins and themes and so on, which also means you can work with your local development tools. If you use for some specific tools for SAS or CSS or whatsoever, you don't need to install it there because you have it locally installed. Now the WP content folder is a local folder on your computer and you can use all the tools which you locally installed. You don't need to put it into the container, which makes it way easier. So, yeah, so that's how my a simple way of development environment is done. And before we continue, maybe are there any questions here? Good. Maybe we can. Light was this. Thank you. Well, you're using a Mac and you're using this configuration where you basically put the WP content folder as a shared volume to your Docker instance, right? Yeah. And this is well documented on the Internet. There are huge threads available where people discussing this issue. This has performance issues because of the Mac OS driver. It takes like 10,000 times longer to access file contents when you do something like this. And you won't experience it in a small website, but we will certainly do on a huge website, on a huge WordPress website at least. And I want to ask you, do you experience that as well? And do you have any solutions for that kind of issue? I know what you're speaking about. But for development issues, I mean, for development, you don't need the performance. So, I mean, I would not run a production version of WordPress on Mac OS either way. But for development, that's really fine. And for me, it's way easier to use all my local development tools and have this there for mounted as this local folder. So, this saves me a lot more time than I lose by kind of having access of this. And in normal day-to-day use, you don't development use. You don't kind of see that these performance issues. Maybe you can method in some milliseconds or whatsoever. But I don't have such issues. So, for me, it's, yeah, maybe we can later look into you directly configurations and so on. Good. But are there any questions of understanding what we just did here? Because otherwise, we would continue now. Good. So, we looked into this. But now, what's about testing? For example, we in our agency, we have some people who are just doing testings. Because we do a lot of front-end development and we have a lot of changes there. So, they need to test a lot of things because we also have also clients who kind of need to edit things. And so, we need to, from the user interface perspective, we need to kind of test a lot of things before we can give it to the clients so they know how to deal with this. Therefore, it's important to kind of have an easy way of testing new versions. And for testing, we would normally just use a really simple combination of having the WordPress image and then just the database. And it looks like this. So, really similar. Okay. So, really similar setup what we did before. But what we added here, we add here is a folder with just a database dump, mainly from a production, which we put just in this DB import folder. And when we then start this container, it gets automatically loaded into the container and set up as a database. So, it gets this dump will automatically be loaded into the database we are setting up as the standard database here in this container, which makes things really easy for testing. Because you just stop the container, put in the newest database dump, started again, and you have really the newest version, which makes kind of transitions really easy and testing. So, you don't need to use some some graphical interface like my admin or you just don't need to do any terminal stuff. Then you can directly load the things in. And also what is important for us, our people who can do testing can easily load it in because you just need to put in the new file in the folder. And so it's easy for them to deal with this even so that they are not developers, but they can this a little bit of terminal things they can do. And yeah, and so far, it saves a lot of time. And the good thing is we can we are of course using then the WordPress versions, which we then also use in production. So we know exactly how it would look like and and can spot issues before we transferred and onto the production service. And what I did not add here is of course some HTTP proxies, which would make it more complicated. Of course, now to to to have the the the real resolutions of the the US and so on. Normally we have then also some HTTPS with some let's encrypt certificates before just to have the real all the real URLs, which are and links working in WordPress. And otherwise, it's more or less the same what we did in the development thing. And yeah, and they can can test it about the performance issue. Maybe again, we are testing on Linux. And so therefore, we don't have so many Mac installations. But this is also for us really good because it's really even so it's the same technology, it's really multi platform, which also saves us a lot of money and time. Good. And so, and last thing. Yeah, is production. Production is, of course, always a bit difficult. There's a lot of setups on the one hand, we are. We have some WordPress installations on ABS. But we also have an own server for smaller projects. Which runs the stocker installations. On this own server, we have an engine x proxy for kind of serving the container environments. And but this is not a Docker container, but a normal installation, because it's easier to maintain. You can also kind of work with locally installed. And then the Docker containers. Because you can just put into in the engine x configuration. Also the direct ports, which you can then forward this. Otherwise, it looks really similar. We did not do anything else. What is really interesting? For example, this environmental variables. You can set it up that there would be a random root password by the start, which makes it a bit more secure, of course. And yeah, otherwise, it's really similar. Which also means we kind of keep all the WordPress related environmental variables outside in this environmental file variable file, which we can then just also copy and paste. And it's also good privacy and also security wise to have these variable files. Kind of put in into your did ignore so that you don't mistakenly uploaded with, you know, your secret of keys and so on assaults. And but the normal compose files you can of course, you know, just upload them and store it. So in a way it's really, really from the structure wise quite well designed to have it also in a good, good process and work with this also with multiple persons on it. Okay. I know this was quite fast. And we only had half an hour. So I put all the examples. In my jpeg repository. Also the slides. So please use it. Maybe we can now in the break you can give me your stories how you're using it or what obstacles you had or issues or problems, or maybe success stories. I always like to hear other success stories. And please use it and also share your weapons. And otherwise, I would say, thank you. And I hope that I gave you some hints how you could come could combine Docker and WordPress to make it really your success story. Yeah. And I hope you still have it on anything. So it's the last one before lunch. I like first before we start to give a phone introduction. So we know who's standing here. So I'm an information designer and developer at the agency here in Vienna as part of the sales. We have a lot of data visualizations and interactive applications. A lot of just communications. And so everything which has a big database. And there are a lot of DevOps. So that's also why I talked today about Docker here. And I'm really into open source and open data. So I'm with a lot of software and also computing there. And I also would like to know a bit about you before we start. So the first question I have is who of you heard of Docker before? Okay, that's good. Next question is who used Docker already? Okay, that's also really good. And who used Docker together with WordPress? Okay, so almost everybody who used Docker. And who used already even WordPress image from Docker Hub? Okay, a bit less. So before we start, some service announcements. If you have a Docker Hub account, there was some security breach yesterday. So if you know, this is what the Docker support just wrote in the morning. So if you have a Docker Hub account, please change your password. And if you made some auto builds, check if your repositories are still connected. But now I think we can start. And the schedule for today is, I first would like to give you some fun production to Docker. And I know that most of you heard about it, so that's good. But also that everybody is on the same level then. Then I would like to start how can we use Docker with WordPress together and give you three best practices. First for development, then for testing. And also for some production running systems. And in the end, then we also some link to my G-CAD repository where you can download all the files I've chosen here with slides and so on. So you don't need to make those. Good, first thing. What is Docker? So Docker is a localization technology which is kind of based on containers. So if we have the one hand on the left, you see Docker as a container-wise version. And on the other side, the traditional localization with virtual machine. So the advantage of Docker is that you don't need to have the operation systems for each container. You have still one operation system and Docker is kind of the connection layer between each of the containers. So you're saving a bit of performance. Because if you have several containers, you don't need to have your own operating system there. So therefore it's a bit easier. If you just look by the numbers, you know what is what is Docker as a technology. So we have 80 billion container downloads. We have a lot of community work there. So there are over 200 meetups. So if you would like to get involved, I think there will be also some meetup near you. There are a lot of third-party projects. There are over 100,000 which are used in Docker. And we also have a lot of Docker-wise applications at Docker Hub. So I think it's a good time now to start using Docker because there's already a lot of information. There's a lot of community. So if you have some questions, you can start. If you'd like to start, it's also available on a lot of platforms. And this really grew in the past years. For example, it kind of started more on Linux-based operating systems and platforms. But nowadays it's usable almost everything, even on Windows. And also on servers. And we also have some integrations for some cloud systems like AWS. So you can really use it on most of your platforms. Why do I use Docker? So first of consistency. Because I really like to know what I'm working with. But it's really the same. That's what I really defined. So it's really easy to reproduce it. So I really know when I kind of set it up. I really know what's inside. And it's also really easy to automate. So in my workflow, I use a lot for Docker containers. In development, in testing and in production. And I really know that it's exactly the same in production. What I'm testing on. And it's really easy to set up. So it really saves me a lot of time. Even so, in the beginning it might be a bit longer to set it up. Yeah, so if you don't, if you're maybe a bit scared about Docker. Because you might need to use a terminal for it. I will give you some hints. And I hope that I can take you some of the fear that you can really use it. So if you install it. There are some first things you can just try out. With Dockermerf you just check here. Is it properly installed? It's really diverse. I want to run on my platform. And then you can just do with Docker run. Hello world, just some example. Which will, if it's not catch, already downloaded and run. So the last one I'd like to give you here is this Docker PS. Which kind of lists all running containers. And I think there you can have a start to go on. And we will then later have a tier of a live show. So we see that it has seven containers. But how can we connect them properly? How can we kind of set up environments. Which are kind of putting all these containers together. And also in a way it's really easy for us to set up. And one of the ways to do this is for example with Docker compose. It's kind of a technology which allows you to define this. And to work really well. So you kind of set up a file. Where you set the things. And you do this now. And then with this, you can just run it. And also kind of put it down. Or even just download the images. So it's really easy if you want to start. Kind of containers where you have a database. Or another database that you have a good press container. Or maybe even some additional X proxy whatsoever. It's only five. You just write Docker compose up. And everything starts. So it's kind of a really easy way. And this is then also the next thing. Because we have a lot of different images for these containers. And there's a kind of official image for WordPress. When I started the years ago with Docker. And kind of made my own images for WordPress. But nowadays I really try to work with the official images. Because it's less work for me. And I also then know that it's really running. And it's better tested. So on app.docker.com you can kind of have the repository of all the images which are there. We see here that it's kind of the official one for a lot of different also platforms. Whatever. And the good thing is you have a lot of different variants you can work with. So first of all you can choose the versions you would like to download. You want to have 4.9 WordPress. Or you want to have the latest one. Or you want to have 5.1. Or even a 5.1.1. You can directly find it. And so also then really easy update. You can also define for example if you have some plugins or themes which need to use a specific PHP version. You can also define them. So you don't need to kind of with different PHP versions installing whatsoever. You just choose the version with the PHP version you would like to have. So that's really really handy if you'd like to for example test some plugins or themes on a new PHP version. You just pull the image within your version. You can test it and if it doesn't work then you can just throw it away. And without much effort. And you also have a version for the command line interface of WordPress. So it's the official repository. So. Much talking. Let's go into the direct things. First thing is for development. I have to show you a setup with kind of three images. First one is the official WordPress image which I just looked at. Then the Maria TV. So of course I like to work with free and open software. And I would like all of them so. And the PHP might happen. Because I think it's a really good place to start for development. And this is how such a document composed file looks like. So now you see it even better. And I'd like to go with you through the lines so you can understand them. So first thing we need to do is to define. One word of document composed. We have kind of which style we are writing in. So we are using the word C. And then we kind of define the services. We define the containers we want to create. And the first thing we like to do because what do we need? We need the database. So we need the database. And we invite the image name which we found in the Docker Hub. We just looked it up. And we want to use the word 10.4. So you just write the name and it will be 10.4. So in the next line what we want to do? We want to do that the container starts always when it stops. Because we would like to have it running all the time. This is for example if you have some special script or what's that? Which only needs to run once. When for example start another container and so on. You can leave it out here. But then we always need the database when it's running. So the next thing is volumes. Because a container, if we stop the container, everything what was in the container is kind of deleted and lost. So if you want to keep data, and for database data I think it's useful to keep it. For the next time we start it. We need to define the volume. We define the volume in the data. And we define it that's kind of mounted in the container in this directory. So that everything which is in this directory and kind of created and set up for the data of the MariaDB is kind of safe in this volume. So next time we start up this container again. It is connected to the volume again and we have all the data we saved in the database. So the next one is environmental configurations where we can define things which are included in the image. So we for example can set up basically a good password. We can also define the database and the user with this password which would be created with the start of the container. So we don't need to then go and create it by ourselves by hand but when it starts it creates this. All these variables are kind of documented as Docker Hub. So if you want me to look it up and underneath the image there they are written what the variables do and what can be defined to configure it. So next thing is networks. Because we would like to put all the containers the containers we are doing would like of course that they are able to talk to each other and therefore we put them in each virtual network. And because of course the WordPress container needs to kind of communicate with the database but somebody from the outside doesn't need to connect to the database. So we kind of set up a virtual network which we kind of gave the name WPDef. So that's the configuration for the database. So that's the same thing we do for WPDef because for the development issues it's really good to have this interface for the database and so we kind of found this image. We also would like to have it running all the time and we say it depends on the database. It's only useful if the database container is running so we connect it there and we also would need to kind of be able to use it in our browser so we kind of define the ports from where we can get it. So the first one are our local ports and the second one are the internal ports of the image. So the image has a standard HTTP port and we kind of translate it into 8080 on our local version here. So if you would like to then open this you just need to write local host 8080 which we then see. So and why are there variables are these? We say the database host is DB because this is the name of the container. We have the password, we just define it here and we put it into the same network. So second container, third container, root-first, finally. So we first say again, it depends on the database we have the latest root-first image and we would like to translate it to port 8000 on our local machine. So we also would like to have it running all the time and we would like to mount the wp-content folder from root-press to a local folder on our machine because that's kind of the folder where we need to add things themes, plugins and things. And that's also kind of the only folder which we need to add. So that's what we kind of need to mount to the outside. Then we need to tell the WordPress container the database variables and the last thing which we can give this we can give some specific WordPress variables because I said the only thing we can add it is the wp-content folder. But what about the config? So in these variables you can set up all the things which are then loaded into the config file. I just have the example so you can for example put the database where we saw the most key all these variables you can enter on the debug mode all these extra configurations you can put it there and then also easily copy and paste it and then it automatically is loaded to the start of the container. Same thing, we put it into the same network as the other two containers and that's how we defined our containers. So this is here. Next thing is we then need to kind of again say list all the networks we are using here we have only this one and we are using this volume which we have for the database data. So that's it and you see it is a bit of work in the beginning but if you define it only once then you can copy and paste it. So how do we do this now? So we just take our terminal and say copy and post so we see now this is the log file from what is happening and so I already before downloaded all the images so that's why it's now the cluster if you first run it it takes depending on the internet connection to download all the images and yeah then we can kind of connect to it as we said 1880s I want you to be my admin and 8000 is our real business area so and of course you could just now go through with this continue and put the links in and yeah but that's how we start the whole environment so an easy thing is okay we need to stop it in this way we just press CTRL C but otherwise you could also just copy and write docker compose down so and everything is cut off and removed and for me this is a really easy way of working also with several development environments and since we have here on the left side you see we have this WP contact folder with all the plugins and themes and so on which also means you can work with your local development trees if you use for specific tools for CSS or whatever you don't need to install it there because you had locally installed now the WP contact folder is a local folder on your computer and you can use all the tools which you locally installed so you don't need to put it into the container which is way easier so yeah so that's how my a simple way of a development environment is done and before we continue maybe are there any questions here thank you well you're using a Mac and you're using this configuration where you basically put the WP contact folder as a shared volume to your Docker instance, right? yeah and this is well documented on the internet there are huge threads available where people discussing this issue this has performance issues because of the Mac OS driver it takes like 10,000 times longer to access file contents when you do something like this and you won't experience it in a small web so what we will certainly do on a huge web so on a huge WordPress and I want to ask you do you experience that as well and do you have any solutions for that kind of issue? and yes and what you're speaking about but for development issues what I mean for development you don't need the performance so I mean I would not run a production version of WordPress on Mac OS in a way but for development that's really fine and for me it's for me it's very easy to use all my local development tools and have this there for mountain as this local folder so it saves me a lot more time than I would lose my time of having access of this and in normal day to day use you don't develop it use you don't see that these kind of issues maybe you can measure it in some really seconds or so but I experience it with every project it's really annoying it takes like 10 seconds okay yeah, like for us it's really not as safe as it is so I didn't do such issues so for me it's yeah, I can I agree, I have similar issues like it's not about we have to talk about it in a second it's not possible to do that like that could you hear the question hmm, yeah okay yeah, maybe we can later look into narrative configurations and so on good but are there any questions of understanding what we just did here because otherwise we would continue now so so we looked into so this but now what's about testing for example with our agency we have some people who are just doing testing because we do a lot of front-end development and we have a lot of changes there so they need to test a lot of things because we also have more clients who kind of need to edit things and so we need to for the user interface perspective we need to kind of test a lot of things before we can get into the clients so they can they know how to do this therefore for us it's important to kind of have an easy way of testing and and for testing we would normally just use a really simple combination of you having the WordPress image and then just the database and it looks like this so really similar so really similar setup what we did before but what we added here we had here is a folder with just a database dump maybe from production which we put just in this DB import folder and when we then start this container it gets automatically loaded into the container and setup as a database so it gets the dump will automatically be loaded into the database we are setting up to see the setup that we can see in this container which makes things really easy for testing because we just stop the container put in the used database dump started again and we have really new version which makes kind of testing so you don't need to use some perfect interface like my admin or you just don't need to do any terminal stuff that can directly load the things in and also what is important for us, our people can do testing can easily load because you just need to put in the new file into the folder started and so it's easy for them to deal with this even so they are not developers but they can use a little bit of terminal and yeah and so far it saves a lot of time and the good thing is we are of course using the WordPress versions which we can also use in production so we know exactly how to do it like and can spot issues before we are transferred and on to the production source what I did not add here is of course some HTTP proxies which would make it more complicated of course to have the the the solutions of the UIS and so on normally we have then also some HTTPS with less equipped certificates before just to have the real all the UIS which are at least working in WordPress and otherwise it's more or less the same what we did in the development thing and yeah and they can test it about the performance issue maybe again we are testing on linux and so therefore we don't have so many back generations but this is also for us really good because it's really even so the same technology, it's really multi-platform which also saves us a lot of money in time good and so and last thing is production production is of course always with difficult there's a lot of setups on the one hand we have some good installations on AES but we also have a own server for smaller projects which runs the stock installations on this own server we we have nginx proxy for kind of certainly the computer environments and but this is not a Docker container but a normal installation because it's easier to maintain so you can also kind of work with locally installed and then the Docker containers because you kind of just put it in the nginx configuration also the dialog ports which you can again forward this otherwise it looks really similar we did not do anything else what is really interesting for example is why MetaValue is you can set it up that there could be a random new password by the start which makes it a bit more secure of course and otherwise it's really similar which also means we kind of keep on the WordPress related and why MetaValue is outside in this why MetaValue very very fine which we can then just also copy and paste and it's also good privacy or security device to have these very good files kind of put into your jits ignore so that you don't mistakenly upload it with your secret also keys and so on so it's and but the normal composed files of course you can install it so in a way we got this factorized quite well designed to have it also in a good good process and work with this with the first okay I know this was quite fast and we only had half an hour so I put all the examples in my repository also these slides so please use it maybe we can now make a break you can give me your stories or what obstacles you have or issues or problems or maybe success stories I always like to hear other success stories and please use it and also share your burdens and otherwise I would say thank you and I hope that I gave you some hints how you could combine documents to make it really your success story