1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/khs1994-docker-lnmp

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
docker-production.yml 21 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Kang Huaishuai Отправлено 10.05.2023 18:54 1e240ad
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797
version: "3.9"
#
# khs1994.com Docker Swarm mode
# @link https://docs.docker.com/engine/swarm/
#
#
# $ docker compose -f docker-production.yml build
# $ docker compose -f docker-production.yml push
#
# $ docker stack deploy -c docker-production.yml lnmp
# $ docker stack ps lnmp
#
# 1. less `volumes`
# 2. config put `configs`
# 3. secrets put `secrets`
# 4. use log driver journald
#
# tips:
# 1. `docker stack deploy` not support env
#
#
# Don't edit this file
#
# $ cp docker-production.yml docker-production.khs1994.yml
#
# Then Edit `docker-production.*.yml`
x-logging:
&default-logging
driver: journald
x-common:
&common
env_file:
- ./scripts/cli/timezone.env
networks:
- backend
read_only: false
# dns:
# - 114.114.114.114
tmpfs: /run:exec
x-deploy:
&default-deploy
restart_policy:
condition: any
delay: 25s
max_attempts: 5
window: 123s
update_config:
parallelism: 2
delay: 10s
order: stop-first
x-labels:
&default-labels
labels:
- com.khs1994.lnmp=true
- com.khs1994.lnmp.app.env=production_swarm_mode
x-build:
&default-build
# Dockerfile: my.Dockerfile
args:
ALPINE_URL: mirrors.aliyun.com # dl-cdn.alpinelinux.org
x-build-debian:
&default-build-debian
# Dockerfile: my.Dockerfile
args:
DEB_URL: mirrors.ustc.edu.cn # deb.debian.org
DEB_SECURITY_URL: mirrors.ustc.edu.cn/debian-security/ # security.debian.org
x-php-common:
&default-php
image: khs1994/php:8.2.3-fpm-alpine
volumes:
- ./app:/app
- type: volume
source: zoneinfo-data
target: /usr/share/zoneinfo
volume:
nocopy: false
# s6
- ./config/s6/s6-overlay/s6-rc.d:/etc/s6-overlay/s6-rc.d
- ./config/s6/s6-overlay/scripts:/etc/s6-overlay/scripts
- ./config/crontabs/root:/etc/crontabs/root.s6
- php-var-log:/var/log
environment:
- APP_ENV=production
configs:
- source: php_ini
target: /usr/local/etc/php/php.ini
- source: php_ini_include
target: /usr/local/etc/php/conf.d/zz-docker-php.ini
- source: php_fpm_conf_d_zz_docker_conf
target: /usr/local/etc/php-fpm.d/zz-docker.conf
secrets:
- source: ssh_id_rsa
target: /root/.ssh/id_rsa
mode: 0600
- source: ssh_config
target: /root/.ssh/config
depends_on:
- mysql
- redis
networks:
- backend
services:
mysql:
<< : [*common,*default-labels]
build:
<< : *default-build-debian
context: ./dockerfile/mysql/
dockerfile: Dockerfile
image: mysql:8.0.33
# image: khs1994/lnmp-mysql:8.0.33
# image: username/lnmp-mysql:tag
environment:
# MYSQL_ROOT_PASSWORD: mytest
MYSQL_ROOT_PASSWORD_FILE: /etc/db_root_password
MYSQL_DATABASE: test
# ports:
# - "127.0.0.1:3306:3306"
volumes:
- ./scripts/backup/init.production:/docker-entrypoint-initdb.d:ro
- ./scripts/backup/mysql:/backup
- mysql-data:/var/lib/mysql
command: ["mysqld","--character-set-server=utf8mb4","--default-authentication-plugin=mysql_native_password"]
# logging: *default-logging
deploy:
<< : [*default-deploy,*default-labels]
placement:
constraints: [node.role == manager]
# resources:
# limits:
# cpus: '0.50'
# memory: 50M
# reservations:
# cpus: '0.25'
# memory: 20M
secrets:
- source: db_root_password
target: /etc/db_root_password
configs:
- source: mysql_conf_d_docker_cnf
target: /etc/mysql/conf.d/docker.cnf
mode: 0644
uid: "0"
gid: "0"
tmpfs: /var/run/mysqld
# mariadb:
# << : [*common,*default-labels]
# build:
# << : *default-build-debian
# context: ./dockerfile/mariadb/
# dockerfile: Dockerfile
# image: "mariadb:10.8.3"
# # image: username/lnmp-mariadb:tag
# # image: khs1994/lnmp-mariadb:10.8.3
# environment:
# MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
# MYSQL_DATABASE: test
# # MYSQL_USER:
# # MYSQL_PASSWORD:
# # ports:
# # - "127.0.0.1:3306:3306"
# volumes:
# # https://github.com/docker-library/docs/tree/master/mariadb#initializing-a-fresh-instance
# - ./scripts/backup/init.production:/docker-entrypoint-initdb.d:ro
# - mariadb-data:/var/lib/mysql
# - ./scripts/backup/mariadb:/backup
# command:
# - mysqld
# - --character-set-server=utf8mb4
# deploy:
# << : [*default-deploy,*default-labels]
# placement:
# constraints: [node.role == manager]
# # logging: *default-logging
# secrets:
# - db_root_password
# configs:
# - source: mariadb_conf_d_docker_cnf
# target: /etc/mysql/conf.d/docker.cnf
redis:
<< : [*common,*default-labels]
build:
<< : *default-build
# << : *default-build-debian
context: ./dockerfile/redis/
dockerfile: Dockerfile
image: redis:7.0.0-alpine
# image: username/lnmp-redis:tag
# image: khs1994/lnmp-redis:7.0.0
# ports:
# - "127.0.0.1:6379:6379"
volumes:
- redis-data:/data
command: [
"redis-server",
"/redis.conf",
"--daemonize no",
"--bind 0.0.0.0",
"--appendonly yes",
# "--save \"\"",
"--aof-use-rdb-preamble yes"
]
# logging: *default-logging
deploy:
<< :
- *default-deploy
- *default-labels
# replicas: 2
placement:
constraints: [node.role == manager]
configs:
- source: redis_conf
target: /redis.conf
# memcached:
# << :
# - *common
# - *default-labels
# build:
# << : *default-build
# # << : *default-build-debian
# context: ./dockerfile/memcached/
# dockerfile: Dockerfile
# image: memcached:1.5.7-alpine
# # image: username/lnmp-memcached:tag
# # image: khs1994/lnmp-memcached:1.5.7
# # ports:
# # - "127.0.0.1:11211:11211"
# volumes:
# - zoneinfo-data:/usr/share/zoneinfo
# deploy:
# << : *default-deploy
# << : *default-labels
# placement:
# constraints: [node.role == manager]
# # logging: *default-logging
# rabbitmq:
# << : *common
# << : *default-labels
# build:
# << : *default-build
# # << : *default-build-debian
# context: ./dockerfile/rabbitmq/
# dockerfile: Dockerfile
# image: rabbitmq:3.7.3-management-alpine
# # image: username/lnmp-rabbitmq:tag
# # image: khs1994/lnmp-rabbitmq:3.7.3
# volumes:
# - rabbitmq-data:/var/lib/rabbitmq
# - zoneinfo-data:/usr/share/zoneinfo
# # ports:
# # - "127.0.0.1:15672:15672"
# # - "127.0.0.1:5672:5672"
# deploy:
# << : *default-deploy
# << : *default-labels
# placement:
# constraints: [node.role == manager]
# # logging: *default-logging
# postgresql:
# << : *common
# << : *default-labels
# build:
# << : *default-build
# # << : *default-build-debian
# context: ./dockerfile/postgresql/
# dockerfile: Dockerfile
# image: postgres:12.0-alpine
# # image: username/lnmp-postgresql:tag
# # image: khs1994/lnmp-postgresql:12.0
# environment:
# - POSTGRES_PASSWORD_FILE=/run/secrets/db_root_password
# - POSTGRES_DB=test
# volumes:
# - zoneinfo-data:/usr/share/zoneinfo
# - postgresql-data:/var/lib/postgresql/data
# # ports:
# # - "127.0.0.1:5432:5432"
# deploy:
# << : *default-deploy
# << : *default-labels
# placement:
# constraints: [node.role == manager]
# # logging: *default-logging
# secrets:
# # default is mysql password
# - db_root_password
# mongodb:
# << : *common
# << : *default-labels
# build:
# << : *default-build-debian
# context: ./dockerfile/mongodb/
# dockerfile: Dockerfile
# image: mongo:5.0.3
# # image: username/lnmp-mongodb:tag
# # image: khs1994/lnmp-mongodb:5.0.3
# volumes:
# # - ./config/mongodb/mongod.conf:/etc/mongod.conf:ro
# - mongodb-data:/data/db
# deploy:
# << : *default-deploy
# << : *default-labels
# placement:
# constraints: [node.role == manager]
# # logging: *default-logging
# # ports:
# # - "127.0.0.1:27017:27017"
# command: ["mongod","--config","/etc/mongod.conf"]
# configs:
# - source: mongod_conf
# target: /etc/mongod.conf
pcit:
<< :
- *common
- *default-labels
- *default-php
image: pcit/pcit:unit
volumes:
- ./pcit/.env.production:/app/pcit/.env.production
- ./pcit/key:/app/pcit/framework/storage/private_key
- pcit-tmp:/tmp
working_dir: /app/pcit
command:
- up
# logging: *default-logging
networks:
- backend
- frontend
extra_hosts:
- "api.github.com:140.82.114.6"
deploy:
<< :
- *default-deploy
- *default-labels
# replicas: 2
placement:
constraints: [node.role == manager]
resources:
limits:
cpus: '0.50'
memory: 256M
reservations:
cpus: '0.25'
memory: 128M
php7:
<< :
- *common
- *default-labels
- *default-php
# image: khs1994/php:8.2.3-s6-alpine
# entrypoint:
# - /s6-init
build:
<< : *default-build
# << : *default-build-debian
# context: ./dockerfile/php/
context: ./app/demo/
dockerfile: Dockerfile
# args:
# foo: bar
# command: php-fpm -R -F
networks:
- frontend
- backend
environment:
- APP_ENV=production
- LNMP_DOCKER_VERSION=v20.10 x86_64 Docker Swarm
- PATH=/command:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# logging: *default-logging
deploy:
<< :
- *default-deploy
- *default-labels
# replicas: 2
placement:
constraints: [node.role == manager]
# php7-laravel-queue:
# << : *common
# << : *default-labels
# << : *default-php
# command:
# - php
# - /app/laravel/artisan
# - queue:work
# - --tries=3
# # logging: *default-logging
# deploy:
# << : *default-deploy
# << : *default-labels
# replicas: 1
# placement:
# constraints: [node.role == manager]
nginx:
<< :
- *common
- *default-labels
build:
<< : *default-build
# << : *default-build-debian
# context: ./dockerfile/nginx/
context: ./config/nginx
dockerfile: Dockerfile
image: nginx:1.23.3-alpine
# image: khs1994/nginx:1.23.3-alpine
ports:
- "443:443/tcp"
- "443:443/udp"
- "80:80"
volumes:
- ./app:/app
# - ./config/nginx:/etc/nginx/conf.d:ro
networks:
- frontend
depends_on:
- php7
# condition: service_completed_successfully
# service_started service_healthy service_completed_successfully
- minio
# logging: *default-logging
deploy:
<< :
- *default-deploy
- *default-labels
# replicas: 2
placement:
constraints: [node.role == manager]
configs:
- source: nginx_conf
target: /etc/nginx/nginx.conf
# uid: '103'
# gid: '103'
# mode: 0440
# one domain one conf file
- source: nginx_80_conf
target: /etc/nginx/conf.d/80.conf
- source: nginx_301_conf
target: /etc/nginx/conf.d/301.conf
- source: nginx_ssl_conf
target: /etc/nginx/conf.d/ssl.config
- source: nginx_khs1994_com_conf
target: /etc/nginx/conf.d/khs1994.com.conf
#
# Example Don't Edit
#
# - source: nginx_domain_com_conf
# target: /etc/nginx/conf.d/domain.com.conf
secrets:
#
# ECC + RSA
#
# @link https://github.com/khs1994-docker/lnmp/issues/239
#
- source: khs1994_com_ssl_crt
target: /etc/nginx/conf.d/ssl/khs1994.com.crt
- source: khs1994_com_ssl_key
target: /etc/nginx/conf.d/ssl/khs1994.com.key
- source: khs1994_com_ssl_rsa_crt
target: /etc/nginx/conf.d/ssl/khs1994.com.rsa.crt
- source: khs1994_com_ssl_rsa_key
target: /etc/nginx/conf.d/ssl/khs1994.com.rsa.key
# - source: developer_khs1994_com_ssl_crt
# target: /etc/nginx/conf.d/ssl/developer.khs1994.com.crt
# - source: developer_khs1994_com_ssl_key
# target: /etc/nginx/conf.d/ssl/developer.khs1994.com.key
# - source: developer_khs1994_com_ssl_rsa_crt
# target: /etc/nginx/conf.d/ssl/developer.khs1994.com.rsa.crt
# - source: developer_khs1994_com_ssl_rsa_key
# target: /etc/nginx/conf.d/ssl/developer.khs1994.com.rsa.key
#
# - source: auth_htpasswd
# target: /etc/nginx/conf.d/auth/nginx.htpasswd
#
# Example Don't Edit
#
# ECC + RSA
#
# - source: domain_com_ssl_crt
# target: /etc/nginx/conf.d/ssl/domain.com.crt
# - source: domain_com_ssl_key
# target: /etc/nginx/conf.d/ssl/domain.com.key
# - source: domain_com_ssl_rsa_crt
# target: /etc/nginx/conf.d/ssl/domain.com.rsa.crt
# - source: domain_com_ssl_rsa.key
# target: /etc/nginx/conf.d/ssl/domain.com.rsa.key
# healthcheck:
# test: ["CMD", "curl", "-f", "http://localhost"]
# interval: 1m30s
# timeout: 10s
# retries: 3
# start_period: 40s
# httpd:
# << :
# - *common
# - *default-labels
# build:
# << : *default-build
# # << : *default-build-debian
# context: ./config/httpd
# dockerfile: Dockerfile
# image: "httpd:2.4.53-alpine"
# # image: username/lnmp-httpd:tag
# # image: khs1994/lnmp-httpd:2.4.53
# ports:
# - "443:443"
# - "80:80"
# volumes:
# - ./app:/app
# # - ./config/etc/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf
# # - ./config/httpd:/usr/local/apache2/conf.d
# - zoneinfo-data:/usr/share/zoneinfo
# working_dir: /app
# networks:
# - frontend
# depends_on:
# - php7
# # logging: *default-logging
# deploy:
# << :
# - *default-deploy
# - *default-labels
# placement:
# constraints: [node.role == manager]
# configs:
# - source: httpd_conf
# target: /usr/local/apache2/conf/httpd.conf
# - source: vhost_khs1994_com_conf
# target: /usr/local/apache2/conf.d/vhost.khs1994.com.conf
# #
# # Example Don't Edit
# #
# # - source: vhost_domain_com_conf
# # target: /usr/local/apache2/conf.d/vhost.domain.com.conf
# secrets:
# - source: khs1994_com_ssl_crt
# target: /usr/local/apache2/conf.d/ssl/khs1994.com.crt
# - source: khs1994_com_ssl_key
# target: /usr/local/apache2/conf.d/ssl/khs1994.com.key
# - source: developer_khs1994_com_ssl_crt
# target: /usr/local/apache2/conf.d/ssl/developer.khs1994.com.crt
# - source: developer_khs1994_com_ssl_key
# target: /usr/local/apache2/conf.d/ssl/developer.khs1994.com.key
# #
# # Example Don’t Edit
# #
# # - source: domain_com_ssl_crt
# # target: /usr/local/apache2/conf.d/ssl/domain.com.crt
# # - source: domain_com_ssl_key
# # target: /usr/local/apache2/conf.d/ssl/domain.com.key
# registry:
# << :
# - *common
# - *default-labels
# build:
# << : *default-build
# # << : *default-build-debian
# context: ./config/registry
# dockerfile: Dockerfile
# image: registry:latest
# # image: username/lnmp-registry:tag
# # image: khs1994/lnmp-registry:latest
# networks:
# - frontend
# - backend
# # ports:
# # - "127.0.0.1:5000:5000"
# volumes:
# # - ./config/registry:/etc/docker/registry
# - registry-data:/var/lib/registry
# deploy:
# << :
# - *default-deploy
# - *default-labels
# placement:
# constraints: [node.role == manager]
# # logging: *default-logging
# configs:
# - source: registy_yml
# target: /etc/docker/registry/config.yml
minio:
<< :
- *common
- *default-labels
image: minio/minio:RELEASE.2022-10-24T18-35-07Z
command:
- server
- /data
- --console-address
- ':9090'
environment:
MINIO_ROOT_USER_FILE: minio-root-user
MINIO_ROOT_PASSWORD_FILE: minio-root-password
MINIO_REGION_NAME: ${MINIO_REGION_NAME:-us-east-1}
MINIO_BROWSER: ${MINIO_BROWSER:-on}
MINIO_DOMAIN: ${MINIO_DOMAIN:-''}
networks:
- backend
- frontend
volumes:
- minio-data:/data
secrets:
- minio-root-user
- minio-root-password
networks:
frontend:
<< : *default-labels
attachable: true
backend:
<< : *default-labels
attachable: true
volumes:
mysql-data:
<< : *default-labels
# mariadb-data:
# << : *default-labels
redis-data:
<< : *default-labels
# rabbitmq-data:
# << : *default-labels
#
# postgresql-data:
# << : *default-labels
#
# mongodb-data:
# << : *default-labels
zoneinfo-data:
<< : *default-labels
# registry-data:
# << : *default-labels
pcit-tmp:
<< : *default-labels
minio-data:
<< : *default-labels
php-var-log:
<< : *default-labels
secrets:
db_root_password:
<< : *default-labels
file: secrets/db_root_password.txt
# ECC + RSA
khs1994_com_ssl_key:
<< : *default-labels
file: ./config/nginx/ssl/khs1994.com.key
khs1994_com_ssl_crt:
<< : *default-labels
file: ./config/nginx/ssl/khs1994.com.crt
khs1994_com_ssl_rsa_key:
<< : *default-labels
file: ./config/nginx/ssl/khs1994.com.rsa.key
khs1994_com_ssl_rsa_crt:
<< : *default-labels
file: ./config/nginx/ssl/khs1994.com.rsa.crt
#
# developer_khs1994_com_ssl_crt:
# file: ./config/nginx/ssl/developer.khs1994.com.crt
# << : *default-labels
#
# developer_khs1994_com_ssl_key:
# file: ./config/nginx/ssl/developer.khs1994.com.key
# << : *default-labels
#
# developer_khs1994_com_ssl_rsa_crt:
# file: ./config/nginx/ssl/developer.khs1994.com.rsa.crt
# << : *default-labels
#
# developer_khs1994_com_ssl_rsa_key:
# file: ./config/nginx/ssl/developer.khs1994.com.rsa.key
# << : *default-labels
#
# auth_htpasswd:
# file: ./config/nginx/auth/nginx.htpasswd
# << : *default-labels
#
# Example Don't Edit
#
# domain_com_ssl_key:
# file: ./config/nginx/ssl/domain.com.key
# << : *default-labels
#
# domain_com_ssl_crt:
# file: ./config/nginx/ssl/domain.com.crt
# << : *default-labels
#
# domain_com_ssl_key:
# file: ./config/nginx/ssl/domain.com.key
# << : *default-labels
#
# domain_com_ssl_crt:
# file: ./config/nginx/ssl/domain.com.crt
# << : *default-labels
#
# SSH use in CI/CD
ssh_id_rsa:
file: /root/.ssh/id_rsa
<< : *default-labels
# SSH config
ssh_config:
file: ./secrets/ssh_config
<< : *default-labels
minio-root-user:
file: ./secrets/minio/root-user.txt
<< : *default-labels
minio-root-password:
file: ./secrets/minio/root-password.txt
<< : *default-labels
configs:
mysql_conf_d_docker_cnf:
file: ./config/mysql/docker.production.cnf
<< : *default-labels
# mariadb_conf_d_docker_cnf:
# file: ./config/mariadb/docker.production.cnf
# << : *default-labels
nginx_conf:
file: ./config/etc/nginx/nginx.production.conf
<< : *default-labels
nginx_80_conf:
file: ./config/nginx/80.conf
<< : *default-labels
nginx_301_conf:
file: ./config/nginx/301.conf
<< : *default-labels
nginx_ssl_conf:
file: ./config/nginx/ssl.config
<< : *default-labels
nginx_khs1994_com_conf:
file: ./config/nginx/khs1994.com.conf
<< : *default-labels
#
# NGINX Example Don't Edit
#
# nginx_domain_com_conf:
# file ./config/nginx/domain.com.conf
# << : *default-labels
#
# httpd_conf:
# file: ./config/etc/httpd/httpd.production.conf
# << : *default-labels
#
# vhost_khs1994_com_conf:
# file: ./config/httpd/khs1994.com.conf
# << : *default-labels
#
# Apache Example Don't Edit
#
# vhost_domain_com_conf:
# file: ./config/httpd/domain.com.conf
# << : *default-labels
php_ini:
file: ./config/php8/php.production.ini
<< : *default-labels
php_development_ini:
file: ./config/php8/php.development.ini
<< : *default-labels
# 重写 php.ini
php_ini_include:
file: ./config/php8/docker-php.ini
<< : *default-labels
php_fpm_conf_d_zz_docker_conf:
file: ./config/php8/zz-docker.production.conf
<< : *default-labels
redis_conf:
file: ./config/redis/redis.production.conf
<< : *default-labels
# mongod_conf:
# file: ./config/mongodb/mongod.production.conf
# << : *default-labels
#
# registy_yml:
# file: ./config/registry/config.production.yml
# << : *default-labels
1
https://api.gitlife.ru/oschina-mirror/khs1994-docker-lnmp.git
git@api.gitlife.ru:oschina-mirror/khs1994-docker-lnmp.git
oschina-mirror
khs1994-docker-lnmp
khs1994-docker-lnmp
master