Skip to main content

docker

understand what is docker

How To use docker....

具体知识去查看那个下一个docker 这一篇涉及使用

know how to write docker compose.yml

services images containers

services:
proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- ./certs:/etc/nginx/certs
- ./vhost.d:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
- ./nginx/proxy.conf:/etc/nginx/proxy.conf:ro
restart: always
networks:
- regantes

letsencrypt:
image: jrcs/letsencrypt-nginx-proxy-companion
container_name: nginx-proxy-le
environment:
NGINX_PROXY_CONTAINER: nginx-proxy
DEFAULT_EMAIL: example@gmail.com
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./certs:/etc/nginx/certs
- ./vhost.d:/etc/nginx/vhost.d
- ./html:/usr/share/nginx/html
depends_on:
- proxy
restart: always
networks:
- regantes

db:
image: mariadb:10.5
container_name: regantes-db
environment:
MYSQL_ROOT_PASSWORD: ingenieria
MYSQL_DATABASE: regantes
MYSQL_USER: regantes
MYSQL_PASSWORD: ingenieria
volumes:
- db_data:/var/lib/mysql
ports:
- "3399:3306"
healthcheck:
test: ["CMD", "mysql", "-uroot", "-pingenieria", "-e", "SELECT 1", "regantes"]
interval: 2s
timeout: 1s
retries: 20
networks:
- regantes

phinx:
build: ./regantes-migrations
container_name: regantes-migrations
depends_on:
db:
condition: service_healthy
volumes:
- ./regantes-migrations/db:/app/db
- ./regantes-migrations/phinx.yml:/app/phinx.yml
- ./regantes-migrations/composer.json:/app/composer.json
- ./regantes-migrations/fresh.sh:/app/fresh.sh
command: ["sh", "-c", "./fresh.sh && tail -f /dev/null"]
networks:
- regantes

php:
build: ./regantes-api
container_name: regantes-php
# ports:
# - "8001:8000"
volumes:
- ./regantes-api:/var/www/html
- /var/www/html/vendor
- ./regantes-api/config/jwt:/var/www/html/config/jwt
- ./regantes-api/php-conf/zz-uploads.ini:/usr/local/etc/php/conf.d/zz-uploads.ini:ro
environment:
PHP_FPM_USER: www-data
PHP_FPM_GROUP: www-data
LANG: en_GB.utf8
LC_ALL: en_GB.utf8
VIRTUAL_HOST: api.example.com
LETSENCRYPT_HOST: api.example.com
JWT_SECRET_KEY: /var/www/html/config/jwt/private.pem
JWT_PUBLIC_KEY: /var/www/html/config/jwt/public.pem
JWT_PASSPHRASE: "w4!GO.V(;81Z"
VIRTUAL_PORT: "8000"
command: ["sh", "-c", "php -S 0.0.0.0:8000 -t public/ public/index.php"]
networks:
- regantes

angular:
build: ./regantes-frontend
container_name: regantes-angular
ports:
- '4201:4200'
working_dir: /app
environment:
VIRTUAL_HOST: app.example.com
LETSENCRYPT_HOST: app.example.com
VIRTUAL_PORT: "4200"
CHOKIDAR_USEPOLLING: "1"
HOST: "0.0.0.0"
PORT: "4200"
restart: unless-stopped
volumes:
- ./regantes-frontend:/app
- /app/node_modules
- /app/.angular
command: ["sh", "-c", "npx ng serve --proxy-config proxy.conf.json --host 0.0.0.0"]
healthcheck:
test: ["CMD-SHELL","wget -qO- http://localhost:4200/ || exit 1"]
interval: 10s
timeout: 3s
retries: 20
networks:
- regantes

angular-prod:
build:
context: ./regantes-frontend
dockerfile: Dockerfile.prod # o el nombre que uses
container_name: regantes-angular-prod
environment:
VIRTUAL_HOST: app.example.com
LETSENCRYPT_HOST: app.example.com
VIRTUAL_PORT: "80" # Nginx interno
VIRTUAL_PROTO: "http"
restart: unless-stopped
networks:
- regantes

wordpress-db:
image: mariadb:10.6
container_name: regantes-wordpress-db
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
MYSQL_USER: root
MYSQL_PASSWORD: password
volumes:
- wordpress_db_data:/var/lib/mysql
ports:
- "3308:3306"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-uroot", "-ppassword"]
interval: 5s
timeout: 3s
retries: 10
networks:
- regantes

wordpress:
build:
context: ./regantes-wordpress
dockerfile: Dockerfile
container_name: regantes-wordpress
depends_on:
wordpress-db:
condition: service_healthy
environment:
# Estos valores deben coincidir con tu wp-config.php (DB_NAME/USER/PASSWORD/HOST)
WORDPRESS_DB_HOST: wordpress-db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
APACHE_DOCUMENT_ROOT: /var/www/html
WORDPRESS_CONFIG_EXTRA: |
define('WP_MEMORY_LIMIT', '256M');
define('WP_MAX_MEMORY_LIMIT', '256M');
define('DISALLOW_FILE_EDIT', true);
define('WP_HOME', 'http://localhost:8083');
define('WP_SITEURL', 'http://localhost:8083');
define('DISALLOW_FILE_EDIT', true);
VIRTUAL_HOST: example.com,www.example.com
LETSENCRYPT_HOST: example.com,www.example.com
CLIENT_MAX_BODY_SIZE: 64M
volumes:
# Monta tu proyecto WP (la carpeta actual) dentro del contenedor
- ./regantes-wordpress:/var/www/html
# ports:
# - "8083:80"
restart: unless-stopped
networks:
- regantes

volumes:
db_data:
wordpress_db_data:

networks:
regantes:
driver: bridge

nginx

understand what is docker