Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Docker
- Vi kör en stack containers per projekt.
- Dessa kan t.ex. bestå av följande containers:
- - php + apache
- - mysql
- _(Vissa projekt kör php-fpm med en egen nginx-container, vissa kör postgres eller mariadb)_
- Vi använder docker-compose för att definiera våra stacks, görs i en `docker-compose.yml`-fil
- ## docker-compose.yml
- version: '2'
- services:
- app:
- build:
- # vi har en docker-mapp som innehåller våra dockerfiles, ligger /docker/app/app.dockerfile
- # 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
- context: docker
- # dockerfile innehåller vår php+apache image, mer om den nedan
- dockerfile: app/app.dockerfile
- working_dir: /var/www/html
- volumes:
- # src innehåller hela projektets kodbas, den mountar vi i containern här.
- - ./src:/var/www/html:cached
- ports:
- - 80:80
- db:
- image: mysql:5.7
- volumes:
- # Use named volume for db data, so that it can persist. (Clear with `docker-compose down -v`)
- - dbdata:/var/lib/mysql:delegated
- ports:
- - 3306:3306
- environment:
- - MYSQL_ROOT_PASSWORD=somethingcoolandsecret
- - MYSQL_DATABASE=drupal
- - MYSQL_USER=drupal
- - MYSQL_PASSWORD=drupal
- volumes:
- dbdata:
- ## app.dockerfile
- 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.
- 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.
- # Basera på php's officiella image för php 7.1 + apache
- FROM php:7.1-apache
- # Install libs.
- RUN apt-get update \
- && apt-get install -y \
- libpng-dev \
- mysql-client \
- && rm -rf /var/lib/apt/lists/*
- # Install PHP extensions.
- RUN docker-php-ext-install \
- opcache \
- pdo \
- pdo_mysql \
- zip
- ... och mycket mera
- ## dnsmasq
- Vanligtvis svarar docker containers bara på `http://localhost`, jag kör dnsmasq för att få `mittprojekt.docker.localhost`
- https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/
- ## Multipla projekt
- Eftersom vi alltid kör port 80 på webservern, så kan vi inte ha två projekt uppe samtidigt, då krockar de på porten.
- 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.
- 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