docker-composeをつかってWEBサーバーをたてる
| WEB制作誰かと環境を共有するわけでもないんですが
docker-composeをつかってるひげです。
まぁ、簡単に環境を整えれるのがいいところですよね。
ってなわけで、今回は本当にメモです。
僕がつかってる「docker-compose.yml」をちょいとメモメモ
WordPress + mysql + phpmyadmin
ワードプレスで構築することがおおいので
ざっくりとこんな感じです。
特殊なことしない限り大体これで動きます。
docker-compose.yml
version: "3"
services:
db:
platform: linux/x86_64 # M1チップ対応のため追記
image: mysql:5.7
volumes:
- ./db/mysql:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pass_****
MYSQL_DATABASE: wordpress_db
MYSQL_USER: user
MYSQL_PASSWORD: user_pass_****
wordpress:
image: wordpress:latest
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./public_html:/var/www/html
- ./php.ini:/usr/local/etc/php/php.ini
- ./ssmtp.conf:/etc/ssmtp/ssmtp.conf
- ./uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
restart: always
depends_on:
- db
ports:
- 9999:80
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: user
WORDPRESS_DB_PASSWORD: user_pass_****
ENVIRONMENT: local
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
volumes:
- ./phpmyadmin-misc.ini:/usr/local/etc/php/conf.d/phpmyadmin-misc.ini
depends_on:
- db
ports:
- 8888:80
Dockerfile
FROM wordpress:latest
# sendmailをインストール
RUN apt-get update \
&& apt-get install -y --no-install-recommends sendmail \
&& rm -rf /var/lib/apt/lists/*
# sendmailをphpで使うための設定
RUN echo "sendmail_path=sendmail -t -i" >> /usr/local/etc/php/conf.d/sendmail.ini
# エントリポイントとして使用するスクリプトを作成
RUN echo '#!/bin/bash' >> /usr/local/bin/docker-entrypoint-wrapper.sh \
&& echo 'set -euo pipefail' >> /usr/local/bin/docker-entrypoint-wrapper.sh
# 1. /etc/hostsにコンテナホスト名のlocalhostエントリを作成
RUN echo 'echo "127.0.0.1 $(hostname) localhost localhost.localdomain" >> /etc/hosts' >> /usr/local/bin/docker-entrypoint-wrapper.sh
# 2. sendmailの再起動
RUN echo 'service sendmail restart' >> /usr/local/bin/docker-entrypoint-wrapper.sh
# 3. docker-entrypoint.shを呼ぶ
RUN echo 'exec docker-entrypoint.sh "$@"' >> /usr/local/bin/docker-entrypoint-wrapper.sh \
&& chmod +x /usr/local/bin/docker-entrypoint-wrapper.sh
ENTRYPOINT ["docker-entrypoint-wrapper.sh"]
CMD ["apache2-foreground"]
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[Mail]
sendmail_path = "/usr/sbin/ssmtp -t"
ssmtp.conf
#
# Config file for sSMTP sendmail
#
mailhub=smtp:1025
FromLineOverride=YES
uploads.ini
memory_limit = 500M
upload_max_filesize = 500M
post_max_size = 500M
max_execution_time = 600
phpmyadmin-misc.ini
allow_url_fopen = Off
max_execution_time = 300
max_input_vars=10000
memory_limit = 500M
post_max_size = 500M
upload_max_filesize = 500M
nginx + php7.4-fpm
wordpress使わないときにちょっとつくったけど
動作までは確認したけど、まだ完成形ではないかなとは思ってます。
まだ、なにが足りないかもわかってないっす。
更新版もまたのせてきます
docker-compose.yml
version: "3"
services:
web:
platform: linux/x86_64
image: nginx
ports:
- 9998:80
restart: always
depends_on:
- app
volumes:
- ./web/default.conf:/etc/nginx/conf.d/default.conf
- ./public_html:/var/www/html
- ./log/nginx/:/var/log/nginx
app:
image: php:7.4-fpm
volumes:
- ./public_html:/var/www/html
restart: always
default.conf
server {
listen 80;
server_name _;
ssi on;
ssi_last_modified on;
root /var/www/html;
index index.html index.php;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location / {
try_files $uri $uri/ $uri/index.html /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(\.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
今回はdocker-compose.yml関連のメモですが
たぶん、これで普通のコーダーさんは行けるんじゃないですかね?
もっといいのあったら教えて下さい。