Update: SSH/WPCLI/Worpress/...
This commit is contained in:
commit
d5b26c7f34
26
Dockerfile
Normal file
26
Dockerfile
Normal file
@ -0,0 +1,26 @@
|
||||
FROM registry.sindominio.net/php-fpm
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get -qy install \
|
||||
php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip \
|
||||
wget less tar curl ca-certificates &&\
|
||||
apt-get clean
|
||||
|
||||
RUN mkdir -p /app/
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
RUN curl -s -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar && \
|
||||
chmod +x wp-cli.phar && \
|
||||
mv wp-cli.phar /usr/local/bin/wp
|
||||
|
||||
COPY ./config/wp-config-sample.php /tmp/wp-config-sample.php
|
||||
COPY ./entrypoint.sh /entrypoint.sh
|
||||
|
||||
VOLUME /app/
|
||||
|
||||
EXPOSE 9000
|
||||
|
||||
ENTRYPOINT [ "/bin/sh", "/entrypoint.sh" ]
|
||||
|
||||
CMD ["/usr/sbin/php-fpm","--nodaemonize"]
|
46
README.md
Normal file
46
README.md
Normal file
@ -0,0 +1,46 @@
|
||||
Simple custom template for a clean Wordpress installation.
|
||||
|
||||
# Config
|
||||
|
||||
Create data directories:
|
||||
|
||||
```
|
||||
$ mkdir db data
|
||||
```
|
||||
|
||||
Database credentials may edit on ENVIRONMENT on docker-compose.yml or user _.env_ file:
|
||||
|
||||
```
|
||||
$ cp .env.sample .env
|
||||
$ vim .env
|
||||
```
|
||||
|
||||
# Add SSH submodule
|
||||
|
||||
```
|
||||
$ git submodule add https://git.audio-lab.org/lrullo/sshd.git sshd
|
||||
```
|
||||
|
||||
# Build and Pull images
|
||||
|
||||
$ docker-compose pull
|
||||
$ docker-compose build
|
||||
|
||||
# Run
|
||||
|
||||
$ docker-compose up -d
|
||||
|
||||
# Auto update Wordpress
|
||||
|
||||
User crontab on your hoster server.
|
||||
|
||||
Use this script as template:
|
||||
|
||||
```
|
||||
#!/bin/bash
|
||||
|
||||
echo "Update Wordrpress"
|
||||
docker exec -it docker-wordpress sudo -u wordpress -i -- /app/wp theme update --all --path="/app/wordpress/"
|
||||
docker exec -it docker-wordpress_1 sudo -u wordpress -i -- /app/wp plugin update --all --path="/app/wordpress/"
|
||||
docker exec -it docker-wordpress sudo -u wordpress -i -- /app/wp core update --path="/app/wordpress/"
|
||||
```
|
59
config/nginx.conf
Normal file
59
config/nginx.conf
Normal file
@ -0,0 +1,59 @@
|
||||
worker_processes auto;
|
||||
pid /run/nginx/nginx.pid;
|
||||
error_log stderr info;
|
||||
daemon off;
|
||||
master_process off;
|
||||
|
||||
include /etc/nginx/modules-enabled/*.conf;
|
||||
|
||||
events {
|
||||
worker_connections 768;
|
||||
# multi_accept on;
|
||||
}
|
||||
|
||||
http {
|
||||
|
||||
##
|
||||
# Basic Settings
|
||||
##
|
||||
|
||||
sendfile on;
|
||||
tcp_nopush on;
|
||||
tcp_nodelay on;
|
||||
keepalive_timeout 65;
|
||||
types_hash_max_size 2048;
|
||||
server_tokens off;
|
||||
|
||||
server_names_hash_bucket_size 128;
|
||||
|
||||
include /etc/nginx/mime.types;
|
||||
default_type application/octet-stream;
|
||||
|
||||
##
|
||||
# SSL Settings
|
||||
##
|
||||
|
||||
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
|
||||
ssl_prefer_server_ciphers on;
|
||||
|
||||
##
|
||||
# Logging Settings
|
||||
##
|
||||
|
||||
access_log /dev/stdout;
|
||||
|
||||
##
|
||||
# Gzip Settings
|
||||
##
|
||||
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
|
||||
##
|
||||
# Virtual Host Configs
|
||||
##
|
||||
|
||||
include /etc/nginx/conf.d/*.conf;
|
||||
#include /etc/nginx/sites-enabled/*;
|
||||
}
|
||||
|
88
config/wordpress.conf
Normal file
88
config/wordpress.conf
Normal file
@ -0,0 +1,88 @@
|
||||
server {
|
||||
listen 80;
|
||||
|
||||
root /app/wordpress/;
|
||||
|
||||
index index.php;
|
||||
|
||||
server_name _;
|
||||
|
||||
access_log /var/log/nginx/access.log;
|
||||
|
||||
location = /favicon.ico {
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location = /robots.txt {
|
||||
allow all;
|
||||
log_not_found off;
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
try_files $uri /index.php =404;
|
||||
fastcgi_pass wordpress:9000;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
|
||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||
set $path_info $fastcgi_path_info;
|
||||
fastcgi_param PATH_INFO $path_info;
|
||||
fastcgi_param REMOTE_ADDR $http_x_real_ip;
|
||||
fastcgi_read_timeout 300;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
}
|
||||
|
||||
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
|
||||
expires max;
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
server {
|
||||
listen 443 ssl default_server;
|
||||
|
||||
include snippets/snakeoil.conf;
|
||||
|
||||
root /app/wordpress/;
|
||||
|
||||
index index.php index.html;
|
||||
|
||||
server_name _;
|
||||
|
||||
access_log /var/log/nginx/access.log;
|
||||
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$args ;
|
||||
}
|
||||
|
||||
location ~ \.php$ {
|
||||
try_files $uri /index.php =404;
|
||||
fastcgi_pass wordpress:9000;
|
||||
fastcgi_index index.php;
|
||||
include fastcgi_params;
|
||||
|
||||
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
|
||||
set $path_info $fastcgi_path_info;
|
||||
fastcgi_param PATH_INFO $path_info;
|
||||
fastcgi_param REMOTE_ADDR $http_x_real_ip;
|
||||
fastcgi_read_timeout 300;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
}
|
||||
|
||||
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
|
||||
expires max;
|
||||
access_log off;
|
||||
log_not_found off;
|
||||
}
|
||||
|
||||
}
|
||||
|
16
config/wp-config-sample.php
Normal file
16
config/wp-config-sample.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
define( 'DB_NAME', 'MYSQL_DATABASE' );
|
||||
define( 'DB_USER', 'MYSQL_USER' );
|
||||
define( 'DB_PASSWORD', 'MYSQL_PASSWORD' );
|
||||
define( 'DB_HOST', 'MYSQL_HOST' );
|
||||
define( 'DB_CHARSET', 'utf8' );
|
||||
define( 'DB_COLLATE', '' );
|
||||
|
||||
$table_prefix = 'wp_';
|
||||
define( 'WP_DEBUG', false );
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
define( 'ABSPATH', __DIR__ . '/' );
|
||||
}
|
||||
|
||||
require_once ABSPATH . 'wp-settings.php';
|
48
docker-compose.yml
Normal file
48
docker-compose.yml
Normal file
@ -0,0 +1,48 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
db:
|
||||
image: mariadb
|
||||
restart: always
|
||||
user: ${USER_GROUP}
|
||||
volumes:
|
||||
- ./db:/var/lib/mysql
|
||||
environment:
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_RANDOM_ROOT_PASSWORD: '1'
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
|
||||
wordpress:
|
||||
build: .
|
||||
user: ${USER_GROUP}
|
||||
volumes:
|
||||
- ./data:/app
|
||||
restart: always
|
||||
environment:
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_HOST: ${MYSQL_HOST}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
|
||||
nginx:
|
||||
image: registry.sindominio.net/nginx
|
||||
ports:
|
||||
- ${NGINX_PORT_HTTP}:80
|
||||
- ${NGINX_PORT_HTTPS}:443
|
||||
volumes:
|
||||
- ./config/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./config/wordpress.conf:/etc/nginx/conf.d/wordpress.conf:ro
|
||||
- ./data:/app
|
||||
restart: always
|
||||
|
||||
ssh:
|
||||
build: ./sshd/
|
||||
environment:
|
||||
SSH_USER: ${SSH_USER}
|
||||
SSH_PASS: ${SSH_PASSWORD}
|
||||
ports:
|
||||
- ${SSH_PORT}:22
|
||||
volumes:
|
||||
- ./data:/app
|
||||
restart: always
|
33
entrypoint.sh
Normal file
33
entrypoint.sh
Normal file
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e;
|
||||
|
||||
install() {
|
||||
cd /app
|
||||
wget --quiet https://wordpress.org/latest.tar.gz
|
||||
tar -xzf latest.tar.gz
|
||||
rm latest.tar.gz
|
||||
}
|
||||
|
||||
config() {
|
||||
if [ -n $MYSQL_DATABASE ]; then sed -i "s:MYSQL_DATABASE:$MYSQL_DATABASE:" /app/wordpress/wp-config.php; fi
|
||||
if [ -n $MYSQL_USER ]; then sed -i "s:MYSQL_USER:$MYSQL_USER:" /app/wordpress/wp-config.php; fi
|
||||
if [ -n $MYSQL_PASSWORD ]; then sed -i "s:MYSQL_PASSWORD:$MYSQL_PASSWORD:" /app/wordpress/wp-config.php; fi
|
||||
if [ -n $MYSQL_HOST ]; then sed -i "s:MYSQL_HOST:$MYSQL_HOST:" /app/wordpress/wp-config.php; fi
|
||||
|
||||
SALT_KEYS=$(curl -s https://api.wordpress.org/secret-key/1.1/salt)
|
||||
echo $SALT_KEYS >> /app/wordpress/wp-config.php;
|
||||
}
|
||||
|
||||
create_wpconfig() {
|
||||
if [ -n /app/wordpress/wp-config.php ]; then cp /tmp/wp-config-sample.php /app/wordpress/wp-config.php; fi
|
||||
}
|
||||
|
||||
|
||||
install
|
||||
create_wpconfig
|
||||
config
|
||||
|
||||
echo "Starting Wordpress"
|
||||
|
||||
exec $@
|
Loading…
Reference in New Issue
Block a user