{"id":11834,"date":"2024-05-24T21:50:45","date_gmt":"2024-05-24T12:50:45","guid":{"rendered":"https:\/\/www.stuffy.site\/computers\/?p=11834"},"modified":"2024-07-27T17:40:59","modified_gmt":"2024-07-27T08:40:59","slug":"wordpress-docker-compose-mysql8-https-portal-ssl%e5%af%be%e5%bf%9c","status":"publish","type":"post","link":"https:\/\/www.stuffy.site\/computers\/archives\/11834","title":{"rendered":"WordPress docker-compose MySQL8 https-portal SSL\u5bfe\u5fdc"},"content":{"rendered":"\n<p>docker\u3092\u3057\u3070\u3089\u304f\u89e6\u3063\u3066\u304a\u3089\u305a\u30b3\u30de\u30f3\u30c9\u3092\u5fd8\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u30ea\u30cf\u30d3\u30ea\u306e\u3064\u3082\u308a\u3067Wordpress\u30b3\u30f3\u30c6\u30ca\u3092\u4eca\u56de\u3001\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\u3002\uff08docker-compose\u5bfe\u5fdc\uff09<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>\u4eca\u56de\u306fAWS\u306eEC2\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u306bDocker\u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304b\u3089docker-compose\u306b\u3088\u308bWordpress\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u307e\u3067\u4f5c\u696d\u3057\u307e\u3057\u305f\u3002\u30c9\u30e1\u30a4\u30f3\u306f domain.std \u3067\u3001EIP\uff08Elastic IP\uff09\u53d6\u5f97\u6e08\u307f\u3068\u3057\u307e\u3059\u3002VPC\u306e\u69cb\u6210\u306f\u4ee5\u4e0b\u306e\u901a\u308a\u3067\u3059\u3002<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>\u30a2\u30d9\u30a4\u30e9\u30d3\u30ea\u30c6\u30a3\u30be\u30fc\u30f3<\/td><td>ap-northeast-1(\u6771\u4eac)<\/td><\/tr><tr><td>VPC<\/td><td>172.31.0.0\/16<\/td><\/tr><tr><td>VPC\u30b5\u30d6\u30cd\u30c3\u30c8<\/td><td>172.31.0.0\/20<\/td><\/tr><tr><td>\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9IP\uff08\u30ed\u30fc\u30ab\u30eb\uff09<\/td><td>172.31.12.128<\/td><\/tr><tr><td>Docker \u30d6\u30ea\u30c3\u30b8\u30cd\u30c3\u30c8\u30ef\u30fc\u30af<\/td><td>172.18.0.0\/24<\/td><\/tr><tr><td>Docker\u30d6\u30ea\u30c3\u30b8GW<\/td><td>172.18.0.1<\/td><\/tr><tr><td>dnsmasq\uff08\u4f7f\u308f\u306a\u3044\uff09<\/td><td>&#8211;<\/td><\/tr><tr><td>mysql000ex1<\/td><td>172.18.0.3<\/td><\/tr><tr><td>WordPress<\/td><td>172.18.0.4<\/td><\/tr><tr><td>Redis<\/td><td>172.18.0.5<\/td><\/tr><tr><td>https-portal<\/td><td>172.18.0.100<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u69cb\u6210\u3092\u7d39\u4ecb\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u4f5c\u696d\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306f\u3001\/home\/ec2-user\/wordpress \u3067\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u3084my.cnf\u3092\u9069\u5b9c\u3001\u4f5c\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<p>[home]<br>\u3000[ec2-user]<br>\u3000\u3000[wordpress]<br>\u3000\u3000\u3000 \u30fbdocker-compose.yml<br>\u3000\u3000\u3000 \u30fb[certs]<br>\u3000\u3000\u3000 \u30fb[mysql]<br>\u3000\u3000\u3000\u3000\u3000\u3000Dockerfile<br>\u3000\u3000\u3000 \u30fb[data]<br>\u3000\u3000\u3000\u3000\u3000\u3000 my.cnf<br>\u3000\u3000\u3000\u3000\u3000\u3000 php.ini<br>\u3000\u3000\u3000\u3000\u3000\u3000 wp-config.php<br>\u3000\u3000\u3000\u3000\u3000 \u30fb[html]<br>\u3000\u3000\u3000\u3000\u3000 \u30fb[mysql]<br><\/p>\n\n\n\n<p>\u30b3\u30f3\u30c6\u30ca\u306fwordpress\u3068mysql000ex1\u3001\u30ad\u30e3\u30c3\u30b7\u30e5\u30b5\u30fc\u30d0\u30fc\u306eredis\u3001\u305d\u308c\u306bLet&#8217;s Encrypt\u8a3c\u660e\u66f8\u7528\u306e\u30ea\u30fc\u30d0\u30b9\u30d7\u30ed\u30ad\u30b7 https-portal\u3001\u306e\uff14\u3064\u3067\u3059\u3002\u30b3\u30f3\u30c6\u30ca\u540d\u306f\u7d1b\u3089\u308f\u3057\u304f\u306a\u3051\u308c\u3070\u304a\u6c17\u306b\u5165\u308a\u306e\u540d\u524d\u3067\u69cb\u3044\u307e\u305b\u3093\u3002<\/p>\n\n\n\n<p>\u3000\u3000\u30fbwordpress<br>\u3000\u3000\u30fbmysql000ex1<br>\u3000\u3000\u30fbredis<br>\u3000\u3000\u30fbhttps-portal<\/p>\n\n\n\n<p>\u30c7\u30fc\u30bf\u3092\u6c38\u7d9a\u5316\u3059\u308b\u305f\u3081\u30dc\u30ea\u30e5\u30fc\u30e0\u3001\u30d5\u30a1\u30a4\u30eb\u95a2\u4fc2\u306f\u30ed\u30fc\u30ab\u30eb\u306b\u30d0\u30a4\u30f3\u30c9\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u5468\u308a\u306f\u56fa\u5b9aIP\u3092\u4f7f\u3063\u3066dnsmasq\u3092\u4f7f\u308f\u306a\u304f\u3066\u3082\u4e00\u5fdc\u3001\u30b3\u30f3\u30c6\u30ca\u9593\u306e\u901a\u4fe1\u304c\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n<pre><span style=\"color: #0000ff;\">\/home\/ec2-user\/wordpress\/mysql\/Dockerfile<\/span>\nFROM mysql:8.0-debian\nRUN apt-get update &amp;&amp; \\\n    apt-get install -y locales\nRUN locale-gen ja_JP.UTF-8\nRUN localedef -f UTF-8 -i ja_JP ja_JP.UTF-8\nENV LANG=ja_JP.UTF-8\nENV TZ=Asia\/Tokyo<\/pre>\n\n\n<p><\/p>\n\n\n<pre><span style=\"color: #0000ff; font-size: 14pt;\">docker-compose.yml<br \/><\/span>\nversion: '3'\u3000\u3000\u3000\u3000\u3000\u3000\u3000# docker compose 2.0\u4ee5\u964d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u306e\u3067\u975e\u63a8\u5968\nservices:\n  wordpress:\n    image: wordpress:latest\n   #container_name: wordpress # --scale\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u5c55\u958b\u3059\u308b\u3068\u304d\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b<br \/>    hostname: domain.std<br \/>    extra_hosts:<br \/>     - \"domain.std:&lt;EIP\u30b0\u30ed\u30fc\u30d0\u30ebip\u30a2\u30c9\u30ec\u30b9&gt;\"\n    links:\n     - mysql000ex1:mysql\n     - redis\n    ports:\n     - 8080-8084:80\n    networks:\n      wp000net1:\n     #  ipv4_address: 172.18.0.4   # --scale\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u5c55\u958b\u3059\u308b\u3068\u304d\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b\n    volumes:\n     - ${PWD}\/data\/html:\/var\/www\/html\n   # - ${PWD}\/data\/php.ini:\/usr\/local\/etc\/php\/php.ini    # 2\u56de\u76ee\u4ee5\u964ddocker cp\u30b3\u30de\u30f3\u30c9\u3067\u6301\u3063\u3066\u304d\u3066\u30b3\u30e1\u30f3\u30c8\u5916\u3059\n   # - ${PWD}\/data\/wp-config.php:\/var\/www\/html\/wp-config.php\n    depends_on:\n     - mysql000ex1\n     - redis\n    restart: always\n    environment:\n      WORDPRESS_DB_HOST: mysql000ex1\n      WORDPRESS_DB_NAME: wordpress000db\n      WORDPRESS_DB_USER: wordpressuser\n      WORDPRESS_DB_PASSWORD: wpuserpass\n      REDIS_HOST: 172.18.0.4\n      REDIS_PORT: 6379\n\n  mysql000ex1:\n    build:\n      context: .\n      dockerfile: .\/mysql\/Dockerfile\n   #image: mysql:8\n   #container_name: mysql000ex1 # --scale\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u5c55\u958b\u3059\u308b\u3068\u304d\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b\n    hostname: mysql000ex1\n    networks:\n      wp000net1:\n     #  ipv4_address: 172.18.0.3 # --scale\u30aa\u30d7\u30b7\u30e7\u30f3\u3067\u5c55\u958b\u3059\u308b\u3068\u304d\u306f\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u3059\u308b\n    ports:\n     - 33006-33010:3306\n    volumes:\n     - ${PWD}\/data\/mysql:\/var\/lib\/mysql\n     - ${PWD}\/data\/my.cnf:\/etc\/mysql\/conf.d\/my.cnf   # my.cnf\u306f\u6bb5\u843d\u4e0b\u306b\u8a2d\u5b9a\u4f8b\u3092\u63b2\u8f09\u3057\u307e\u3057\u305f\n    restart: always\n    environment:\n      MYSQL_ROOT_PASSWORD: mysqlPassword\n      MYSQL_DATABASE: wordpress000db\n      MYSQL_USER: wordpressuser\n      MYSQL_PASSWORD: wpuserpass\n      TZ: Asia\/Tokyo\n    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci\n \n redis:\n    image: redis:latest\n    container_name: redis\n    ports:\n      - \"6379\"\n    networks:\n      wp000net1:\n        ipv4_address: 172.18.0.5\n\n  https-portal:\n    image: steveltn\/https-portal:1\n    container_name: https-portal\n    ports:\n      - '80:80'\n      - '443:443'\n    links:\n      - mysql000ex1:mysql\n      - wordpress\n      - redis\n    networks:\n      wp000net1:\n        ipv4_address: 172.18.0.100\n    restart: always\n    volumes:\n      - ${PWD}\/certs:\/var\/lib\/https-portal\n    environment:\n      DOMAINS: 'domain.std -&gt; http:\/\/wordpress:80, domain.std -&gt; http:\/\/redis:6379'\n      CLIENT_MAX_BODY_SIZE: 16M\n      STAGE: 'staging'                # \u521d\u56de\u8d77\u52d5\u4ee5\u964d\u3001\u672c\u756a\u3092\u3059\u308b\u3068\u304d\u306f'production'\u306b\u3059\u308b\n     #FORCE_RENEW: 'true'      # \u4f7f\u3044\u3059\u304e\u308b\u3068\u8a8d\u8a3c\u5236\u9650\u306elimit\u304c\u639b\u304b\u308b\u306e\u3067\u307b\u3068\u3093\u3069\u4f7f\u308f\u306a\u3044\n\nnetworks:\n  wp000net1:\n    ipam:\n      driver: default\n      config:\n        - subnet: 172.18.0.0\/24\n          gateway: 172.18.0.1\n<\/pre>\n\n\n<p>https-portal\u306f\u521d\u56de\u8d77\u52d5\u306f&#8217; staging&#8217;\u3067\u69d8\u5b50\u3092\u898b\u3066\u3001docker compose\u3067\u5404\u30b3\u30f3\u30c6\u30ca\u306e\u4e0d\u5177\u5408\u3092\u70b9\u691c\u3057\u3066\u3001\u672c\u756a\u306b\u306a\u3063\u305f\u3089&#8217;production&#8217;\u306b\u3057\u3066docker compose logs\u30b3\u30de\u30f3\u30c9\u3067\u30a8\u30e9\u30fc\u3092\u62fe\u3044\u307e\u3059\u3002production\u306e\u8a8d\u8a3c\u306b\u306f5\u5206\u304f\u3089\u3044\u306e\u6642\u9593\u304c\u304b\u304b\u308a\u307e\u3059\u3002limit\u306b\u5f15\u3063\u304b\u304b\u3089\u306a\u3044\u305f\u3081\u306b\u3082Wordpress\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u753b\u9762\u304c\u51fa\u306a\u3044\u306a\u3069\u554f\u984c\u304c\u3042\u3063\u305f\u3089\u76f4\u3050\u306bdocker compose down\u3057\u3066\u30ed\u30fc\u30ab\u30eb\u306ecerts\u3092\u524a\u9664\u3001\u518d\u4f5c\u6210\u3059\u308b\u3068\u826f\u3044\u3067\u3057\u3087\u3046\u3002<\/p>\n\n\n<pre><span style=\"color: #0000ff; font-size: 14pt;\">my.cnf<\/span>\n[mysqld]\nskip-name-resolve\ndatadir=\/var\/lib\/mysql\nsocket=\/var\/run\/mysql\/mysql.sock\nsecure-file-priv=\/var\/lib\/mysql-files\nuser=mysql\n<span style=\"color: #0000ff;\">character-set-server=utf8mb4\nmysql_native_password=ON<\/span>\u3000\u3000\u3000\u3000# MySQL8.0.40 \u4ee5\u524d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u30a8\u30e9\u30fc\u304c\u51fa\u308b\u306e\u3067\u30b3\u30e1\u30f3\u30c8\u30a2\u30a6\u30c8\u524a\u9664\n[client]\nsocket=\/var\/run\/mysql\/mysql.sock\n<span style=\"color: #0000ff;\">default-character-set=utf8mb4<br \/><\/span><\/pre>\n\n\n<p>php.ini-production, wp-config-sample.php\u306fdocker cp\u30b3\u30de\u30f3\u30c9\u3067\u8d77\u52d5\u4e2d\u306e\u30b3\u30f3\u30c6\u30ca\u304b\u3089\u30ed\u30fc\u30ab\u30eb\u306b\u30b3\u30d4\u30fc\u3057\u3066\u53d6\u308a\u51fa\u3057\u3001\u30ea\u30cd\u30fc\u30e0\u7de8\u96c6\u3057\u307e\u3059\u3002<\/p>\n\n\n<pre><span style=\"color: #0000ff;\">$ docker cp wordpress-wordpress-1:\/usr\/local\/etc\/php\/php.ini-production .\n$ docker cp wordpress-wordpress-1:\/var\/www\/html\/wp-config-sample.php .<\/span><\/pre>\n<pre><span style=\"color: #0000ff; font-size: 14pt;\">php.ini<\/span>\n\u2193\uff08\u4ee5\u4e0b\u3092\u8ffd\u8a18)\nupload_max_filesize = 128M\npost_max_size = 128M\nmemory_limit = 128M\nmax_execution_time 300\nmax_input_time 300<\/pre>\n<pre><span style=\"color: #0000ff; font-size: 14pt;\">wp-config.php<\/span>\n\/\/ ** Database settings - You can get this info from your web host ** \/\/\n\/** The name of the database for WordPress *\/\ndefine( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress000db') );\n\n\/** Database username *\/\ndefine( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'wordpressuser') );\n\n\/** Database password *\/\ndefine( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'wpuserpass') );\n\uff08\u4e2d\u7565\uff09\n\/** Database hostname *\/\ndefine( 'DB_HOST', getenv_docker('WORDPRESS_DB_HOST', 'mysql000ex1') );\n\n<span style=\"color:#ff0000\">define( 'REDIS_HOST', '172.18.0.5') );\ndefine( 'REDIS_PORT', '6379') );<\/span>\n\n\/** Database charset to use in creating database tables. *\/\ndefine( 'DB_CHARSET', getenv_docker('WORDPRESS_DB_CHARSET', 'utf8') );\n\n\/** The database collate type. Don't change this if in doubt. *\/\ndefine( 'DB_COLLATE', getenv_docker('WORDPRESS_DB_COLLATE', '') );\n<\/pre>\n\n\n<p>\u6700\u521d\u3001\u4e0b\u8a18\u306e\u69d8\u306a\u30dc\u30ea\u30e5\u30fc\u30e0\u306e\u5b9a\u7fa9\u3092\u3057\u3066\u3044\u305f\u306e\u3067\u3059\u304c\u300efailed to mount local volume, no such file or directory\u300f\u3068\u3044\u3063\u3066docker\u304c\/data\/mysql\u306b\u30dc\u30ea\u30e5\u30fc\u30e0\u3092\u4f5c\u308d\u3046\u3068\u3057\u305f\u30fb\u30fb\u30fb\u306e\u30a8\u30e9\u30fc\u304c\u51fa\u3066\u30b5\u30d6\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u8868\u8a18\u3092\u8a31\u3055\u306a\u3044\u306e\u3060\u306a\u3068\u601d\u3063\u305f\u306e\u3067\u30ab\u30ec\u30f3\u30c8\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u300c.\/\u300d\u3092 ${PWD} \u3067\u7f6e\u304d\u63db\u3048\u308b\u3084\u308a\u65b9\u306b\u843d\u3061\u7740\u304d\u307e\u3057\u305f\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/forums.docker.com\/t\/problem-with-named-volume-in-docker-compose\/98299\">Problem with named volume in docker-compose &#8211; docker.com<\/a><\/p>\n\n\n<pre>  mysql:<br \/>    volume:<br \/>     - mysql000vol1:\/var\/lib\/mysql<br \/>\u30fb<br \/>\u30fb<br \/>volumes:\n  mysql000vol1:\n    <span style=\"color: #0000ff;\">driver: local<\/span>\n    driver_opts:\n      type: none\n      o: bind<br \/>      device: .\/data\/mysql<br \/><br \/>      <\/pre>\n\n\n<p><a href=\"https:\/\/stackoverflow.com\/questions\/71680749\/docker-failed-to-mount-local-volume-mount-no-such-file-or-directory\">docker failed to mount local volume mount no such file or directory &#8211; stackoverflow<\/a><\/p>\n\n\n<pre>  mysql:<br \/>    volumes:\n     - ${PWD}\/data\/mysql:\/var\/lib\/mysql<\/pre>\n\n\n<p>\u3044\u308d\u3044\u308d\u306a\u8a18\u6cd5\u304c\u3042\u308a\u30d5\u30a9\u30ed\u30fc\u304c\u5927\u5909\u3067\u3059\u304c\u3001\u30b3\u30de\u30f3\u30c9\u3092\u305d\u306e\u90fd\u5ea6\u7e70\u308a\u8fd4\u3057\u4f7f\u3046\u3053\u3068\u3067\u8eab\u306b\u3064\u304f\u3053\u3068\u3082\u3042\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<p>\u305d\u308c\u3067\u306f\u697d\u3057\u3044Docker\u30e9\u30a4\u30d5\u3092\uff01<\/p>\n","protected":false},"excerpt":{"rendered":"<p>docker\u3092\u3057\u3070\u3089\u304f\u89e6\u3063\u3066\u304a\u3089\u305a\u30b3\u30de\u30f3\u30c9\u3092\u5fd8\u308c\u3066\u3044\u307e\u3057\u305f\u304c\u30ea\u30cf\u30d3\u30ea\u306e\u3064\u3082\u308a\u3067Wordpress\u30b3\u30f3\u30c6\u30ca\u3092\u4eca\u56de\u3001\u4f5c\u3063\u3066\u307f\u307e\u3057\u305f\u3002\uff08docker-compose\u5bfe\u5fdc\uff09<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32,46,60,109,35,4],"tags":[],"class_list":["post-11834","post","type-post","status-publish","format-standard","hentry","category-aws-2","category-docker","category-https-portal","category-mysql-docker","category-php","category-wordpress"],"_links":{"self":[{"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/posts\/11834","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/comments?post=11834"}],"version-history":[{"count":52,"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/posts\/11834\/revisions"}],"predecessor-version":[{"id":12145,"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/posts\/11834\/revisions\/12145"}],"wp:attachment":[{"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/media?parent=11834"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/categories?post=11834"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.stuffy.site\/computers\/wp-json\/wp\/v2\/tags?post=11834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}