Advertisement
Guest User

docker stuff

a guest
Feb 7th, 2019
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. # Docker
  2.  
  3. Vi kör en stack containers per projekt.
  4.  
  5. Dessa kan t.ex. bestå av följande containers:
  6.  
  7. - php + apache
  8. - mysql
  9.  
  10. _(Vissa projekt kör php-fpm med en egen nginx-container, vissa kör postgres eller mariadb)_
  11.  
  12. Vi använder docker-compose för att definiera våra stacks, görs i en `docker-compose.yml`-fil
  13.  
  14. ## docker-compose.yml
  15.  
  16. version: '2'
  17.  
  18. services:
  19. app:
  20. build:
  21. # vi har en docker-mapp som innehåller våra dockerfiles, ligger /docker/app/app.dockerfile
  22. # att speca context såhär gör att vid docker build så tar den bara innehållet i den mappen och inte allt annat, snabbar upp det lite
  23. context: docker
  24. # dockerfile innehåller vår php+apache image, mer om den nedan
  25. dockerfile: app/app.dockerfile
  26. working_dir: /var/www/html
  27. volumes:
  28. # src innehåller hela projektets kodbas, den mountar vi i containern här.
  29. - ./src:/var/www/html:cached
  30. ports:
  31. - 80:80
  32.  
  33. db:
  34. image: mysql:5.7
  35. volumes:
  36. # Use named volume for db data, so that it can persist. (Clear with `docker-compose down -v`)
  37. - dbdata:/var/lib/mysql:delegated
  38. ports:
  39. - 3306:3306
  40. environment:
  41. - MYSQL_ROOT_PASSWORD=somethingcoolandsecret
  42. - MYSQL_DATABASE=drupal
  43. - MYSQL_USER=drupal
  44. - MYSQL_PASSWORD=drupal
  45.  
  46. volumes:
  47. dbdata:
  48.  
  49. ## app.dockerfile
  50.  
  51. En Dockerfile är instruktioner om hur docker ska bygga en image. Se det som kommandon som ska köras på servern för att få allt att rulla. Wordpress har kanske några krav på libs som måste va installerade.
  52.  
  53. Finns säkert ett gäng färdiga Wordpress-images man kan använda också, i så fall kan du bara speca `image` precis som vi gör i `db` i docker-compose ovan.
  54.  
  55. # Basera på php's officiella image för php 7.1 + apache
  56. FROM php:7.1-apache
  57.  
  58. # Install libs.
  59. RUN apt-get update \
  60. && apt-get install -y \
  61. libpng-dev \
  62. mysql-client \
  63. && rm -rf /var/lib/apt/lists/*
  64.  
  65. # Install PHP extensions.
  66. RUN docker-php-ext-install \
  67. opcache \
  68. pdo \
  69. pdo_mysql \
  70. zip
  71. ... och mycket mera
  72.  
  73. ## dnsmasq
  74.  
  75. Vanligtvis svarar docker containers bara på `http://localhost`, jag kör dnsmasq för att få `mittprojekt.docker.localhost`
  76.  
  77. https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/
  78.  
  79. ## Multipla projekt
  80.  
  81. Eftersom vi alltid kör port 80 på webservern, så kan vi inte ha två projekt uppe samtidigt, då krockar de på porten.
  82.  
  83. Eftersom containers är så snabba att spinna upp och ner jämfört med Vagrant-boxes, samt att vi sällan jobbar i två projekt samtidigt, så vi har inte gjort nåt åt det.
  84.  
  85. Jag tror man kan köra Traefik för att få till det, men aldrig testat.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement