DockerとMysql

2024.03.07

Logging

おはようございます、Dockerデスクトップのコンテナが別れている時、他のコンテナからMysqlサーバーに繋ぎたいという事がありますよね。その繋ぎ方を自分は勘違いしていたので記事として残しときます。Dockerを使いだして一年目で気づく間違いです(泣)。外部コンテナのMysqlサーバーに繋ぎたい場合、下記の画像のようにmysqldbに繋がないとコネクションが出来ません。自分はMYSQL_HOSTだと思っていたのですがどうも違うようです。

これを知った時、正直なところ「えっ」って声が出たぐらい衝撃的でした。Dockerを使う前はバーチャルボックスというものを長年使っていたのですが、いまではDocker系が使いやすいです。Dockerデスクトップに慣れていたのに、DockerCLOUDの時代なんですよねぇー。

明日へ続く。

タグ

docker, DockerCLOUD, Dockerデスクトップ, Docker系, MYSQL_HOST, mysqldb, Mysqlサーバー, コネクション, こんてな, ところ, バーチャルボックス, 下記, , 外部コンテナ, 時代, 画像, 繋ぎ方, 自分, 記事, 長年,

ドッカー(Docker)でcronが動かない人たちへ。

2023.12.30

Logging

おはようございます、ドッカー(Docker)でcronが動かない人たちへ、csentos入れててcronが動かない場合は一度、アインストールしてこちらをインストールしてみてください。

yum remove cronie-anacron
yum -y install cronie-noanacron

どうもデフォルトのcronie-anacronがDockerと相性が悪いみたいなのでcronie-noanacronをしてみてください。そうすると動くようになります。みんな大好きウブントゥの記事がネット上に溢れていてcentos系(AlmaLinux)を入れていたりする人の記事が無かったりするので記事にしました。

ちなみにDockerfileにこれを入れ込んだりするのも有りだと思います。大体の人はそっちで対応していると思います。

明日へ続く。

タグ

almalinux, Centos系, cron, cronie-anacron, cronie-noanacron, csentos, docker, dockerfile, y install cronie-noanacron, yum remove cronie-anacron yum, デフォルト, ドッカー, ネット上, みんな大好きウブントゥ, 一度, , 人たち, 悪い, 相性, 記事,

DockerFileを作ってみたよ。Xdebug not Fund

2023.07.20

Logging

おはようございます、DockerFileを作ってみたよ。アパッチとPHP、Xdebugをインストール出来るDockerFileです。困ったちゃんになったのは「docker-php-ext-enable」という部分でCommandがないよって言って弾かれることでしたが、ここをググってググってを繰り返して答えが分かりました。

From が間違っていたのです。大体のサイトはDockerにXdebugをインストールする部分を強調してかいているので上手くインストールすることが出来なかったです。恐らくそんな事は当たり前に知っておく事なのかもしれませんがズブの素人には分かりづらかったです。

FROM almalinux:latest
RUN yum -y install httpd
RUN yum -y install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
RUN yum -y module switch-to php:8.1
RUN yum -y install php php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pgsql php-devel php-xdebug php-cli
FROM php:8.1-cli
RUN pecl install xdebug-3.2.1 && docker-php-ext-enable xdebug

下記のDockerFileを作りymalと結びつけ下記のCommandを打てばインストール可能になります。因みにPHPのモジュールはお好みに合わして追加してください。

 docker-compose up -d --build

タグ

-Command, d --build, docker, docker-compose up, docker-php-ext-enable, docker-php-ext-enable xdebug, dockerfile, from, FROM almalinux, latest RUN, php, RUN yum, xdebug, y install httpd RUN, y install php php-fpm php-gd php-mbstring php-mysqlnd php-pdo php-pear php-pgsql php-devel php-xdebug php-cli FROM php, yum, アパッチ, ズブ, モジュール, 作りymal,

DockerでWEB開発するならXdebugを最初に入れとこうの巻。

2023.07.16

Logging

おはようございます、DockerでWEB開発するならXdebugを最初に入れとこうの巻。これを途中で入れるということは環境を元に戻すことに繋がるので大変です。特にGitLabやGitHubなどを使用している場合は尚更かと思います、面倒なんですね途中からXdebugを入れるのは本当に。

自分のようにならないように最初からXdebugは入れておく方が大事です、あと開発に使用するポートも事前に聞くべしです。あとからDockerにポート開放は出来ないらしいので大事になります。

ladybug plastic toy
Photo by Mike Bird on Pexels.com

今では枯れた技術になるかもしれない、 VirtualBoxの方がそういう面では後から修正しやすいかと思います。Dockerは独特なのか分かりませんが後からポート開放ダメ、またVScodeで検証するためにはDocker独自に設定をしないといけないので、ポート開放してphp.iniの設定してVscodeでさてトレースとはいかないのです。

DockerのXdebug.iniみたいなのを設定しないと使用できない仕様になっています。因みに今、新たなymlファイルとDockerFileを作ろうとしています。毎回、yumでインストールしている部分があるのでそれをDockerFileで行おうと思っています。

タグ

docker, dockerfile, github, gitlab, Photo by Mike Bird on Pexels.com, php.ini, virtualBOX, VScode, xdebug, Xdebug.ini, Ymlファイル, yum, トレース, ポート, ポート開放, , 最初, 毎回, 途中,

windows11を初期化した話。バックアップ失敗?

2023.06.17

Logging

おはようございます。前々から初期化しようと思っていた、メインのパソコンを初期化しました。これは先日の話になります。

初期化は比較的にすんなりと出来たのですが、Dockerのimageデータが読み込めないという問題が発生しました。バックアップを取る際にMacなどのOS用のコマンドを使用してバックアップを取っていたのが問題でした。

docker save ubuntu -o ubuntuv.tar
docker load -i ubuntuv.tar
docker save ubuntu > ubuntuv.tar
docker load < ubuntuv.tar

上記のことを知らずにリナックス用のバックアップコマンドで行い、load確認をせずに初期化を強行してしまったのが間違いでした。結果、データは残っていたので再度、DockerComposeからコンテナを立ち上げ直し、なんとか対応出来ましたが心臓に悪いなって感じましたね。

タグ

docker, docker save ubuntu, DockerCompose, gt, i ubuntuv, imageデータ, load確認, lt, Mac, tar, ubuntuv.tar, ubuntuv.tar docker load, コマンド, こんてな, バックアップ, バックアップコマンド, リナックス用, 再度, 前々, 心臓,

さくらレンタルサーバーライトでもLaravel。

2023.05.03

Logging

おはようございます。さくらレンタルサーバーライトで初期のドメインでもLaravelは導入可能。ただし、Laravelの構築はローカル側でDockerなりなんなりを使用して構築しないと限りなく面倒なので、おすすめしません。

Laravelのローカル導入は割愛して、さくらレンタルサーバーライトの初期ドメインで構築するには、どのようにすれば良いかを記載します。まず、ローカル側でLaravelを構築し、そのファイルをサーバー側のwww配下にアップロードします。その後、wwwに.htaccessファイルを新規作成し下記のような記述を書いてください。こうすることで、さくらレンタルサーバーライトでもLaravelを使用できます。尚、Mysqlはさくらレンタルサーバーライトでは使用できないので、sqliteを使用する事になります。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/reborn9-app/public/
RewriteRule ^(.*) /reborn9-app/public/$1

軽量のWebサービスならさくらレンタルサーバーのライトでも十分動作します。是非、トライしてみてください。

追伸:ライトなのでcronは使用できません。格安サーバーでcronまで使用したいというのならばロリポップが良いかと思います。5分間ですがcronも使用できます、ロリポップ最強かも🤔。

タグ

$1, cron, docker, htaccessファイル, Laravel, MYSQL, public, reborn9-app, REQUEST_URI, RewriteEngine On RewriteCond %, RewriteRule, Sqlite, www配下, さくらレンタルサーバー, さくらレンタルサーバーライト, ロリポップ, ロリポップ最強, 記述, 軽量, 追伸,

dockerとlaravel(ローカルと同期していると遅くなる。)

2022.12.26

Logging

おはようございます、先日は雪が降りましたね_(:3」∠)_。今日も寒い日になりそうです☃。

さて、Laravelを勉強して昨日の時点でLaravelの参考書は終盤になっています。月曜日には入門書はコンプリート出来そうです。自分はDockerを使って環境を作っているのですが、Laravelのファイルをローカルに置きDockerで走らせているのですが、どうもブラウザで見る際も常に全ての同期処理がバックグラウンドで走っているらしく、とても表示するのにストレス(遅延)を感じていました。

それを解消する方法はないかと探していた所、@ucan-labさんと@suinさんがヒントを記載していました。下記のヒントから、vendorをローカルに同期しないようにしてDocker内にコピーする方法に変更した所、Qiitaに記載している通り、レスポンスがかなり早くなりました。爆速で表示されるようになりました😲。

docker container cp vendor コンテナ名:/var/www/html/example-app

追伸

vendor及びstorageのframeworkの配下も同じようにすると早くなりますよ。エラーが出るのでパーミッションの777に変更することもお忘れなく!!!!Composerのインストールでエラーが出る場合は下記を叩いてみてください。

mkdir -p storage/framework/cache/data/
mkdir -p storage/framework/app/cache
mkdir -p storage/framework/sessions
mkdir -p storage/framework/views

タグ

App, cache mkdir, Composer, data, docker, example-app, Framework, Laravel, qiita, sessions mkdir, storage, ucan-labさん, var, vendor, Volume, パーミッション, 爆速, 置きDocker, 追伸, 配下,

docker参考書では教えてくれないymlの設定🙄。 #docker

2022.12.20

Logging

おはようございます、勉強しているのですが自信がない…。

Dockerをどっか~ん、はいスミマセンおじさんギャグです🙇。ヤムルファイルとDockerファイルを使うと結構手抜きが出来るですね。この頃、Dockerの良いところを取り入れたサービスが新たに登場しましたよね。Finchとか言う奴です・・・AWSが提供しているやつ🙄。

自分は当分、Dockerを使います。Dockerを使用していた前はVirtualBoxでした。他にもVagrant(ベイグラント)に浮気したこともありますが、Dockerを使用してからは他の仮想サービスより使いやすい事が分かりました。使っている人が多いとヤムルファイルやDockerファイルもネットにゴロゴロ転がっていますからね。

さて、最後に自分が使っているymlファイルの設定です、いらない部分もあるかもですがご自由にご使用ください。

    build:
      context: .
      dockerfile: Dockerfile
version: "3"
services:
  web:
    image: almalinux:latest
    container_name: test_v0
    restart: always
    ports:
      - 443:443
      - 80:80
    privileged: true
    command: /sbin/init
    extra_hosts:
      - "taoka-test.com:127.0.0.1"
    volumes:
      - X:/var/www/html:/var/www/html
    build:
      context: .
      dockerfile: Dockerfile
  mysqldb:
      image: mysql:latest
      container_name: test_db_v0
      command: --default-authentication-plugin=mysql_native_password
      restart: always
      hostname: testdbhost1
      environment:
        MYSQL_USER: hogeuser
        MYSQL_PASSWORD: password
        MYSQL_DATABASE: hoge_db
        MYSQL_ROOT_PASSWORD: password
        TZ: "Asia/Tokyo"
      ports:
        - 3306:3306
      expose:
        - '3306'
      volumes:
        - X:/var/test/db/mysql_init:/docker-entrypoint-initdb.d
        - X:/var/test/db/mysql_data:/var/lib/mysql
      tty: true
  postgresdb:
      image: postgres:latest
      container_name: test_postdb_v0
      restart: always
      hostname: testdbhost2
      environment:
        POSTGRES_USER: hogeuser
        POSTGRES_PASSWORD: password
        PGPASSWORD: password
        POSTGRES_DB: hoge_db
        TZ: "Asia/Tokyo"
      ports:
        - 5432:5432
      expose:
        - '5432'
      volumes:
        - X:/var/test/db2/postgres_init:/docker-entrypoint-initdb.d
        - X:/var/test/db2/postgres_data:/var/lib/postgresql/data
      tty: true

タグ

-Command, context, default-authentication-plugin, docker, Environment, expose, Finch, hostname, init, latest, MYSQL, password, ports, postgres, postgresql, sbin, services, tty, Vagrant, virtualBOX,

dockerにmysqlサーバーを追加するYML(ヤムル)ファイル #yml

2022.12.16

Logging

おはようございます、1,2,3🎉。Docker呟き第3回ぐらいですかね🙄。

今日はdockerにmysqlサーバーの設定、追加した話です。これでローカル環境で動作するだろうと思います、実際、mysqlのコマンドをwebサーバーから叩いてみて確認は行っています。尚、webサーバー側にmysqlにインストールして上げないとコマンドでの確認が取れません。

また、Dockerの外側と言えば良いのかな?、外部から例えばHeidisqlなので繋ぎたい場合はホストを127.0.0.1にしないと繋げないようです。そこら編も注意してくださませ🙇。

この頃、Dockerを使うようになってまだ日が浅いので右も左も分からないのですが、もっと出来ることを知りたいなと思って本を購入したわけですが、入門書には自分の知りたいことは、最後のページに書いている部分だけでした。立ち読みしていた時点でそれは分かっていたので、凄く悩んで先日、本を購入したのですが、それでも購入してよかったと思います。

version: "3"
services:
  web:
    image: almalinux:latest
    container_name: web_v0
    ports:
      - 80:80
      - 443:443
    privileged: true
    command: /sbin/init
    extra_hosts:
      - "example.com:127.0.0.1"
    volumes:
      - X:\var\www\html:/var/www/html
  db:
      image: mysql:latest
      container_name: db_v0
      command: --default-authentication-plugin=mysql_native_password
      restart: always
      hostname: mysqlhost
      environment:
        MYSQL_USER: hogeuser
        MYSQL_PASSWORD: password
        MYSQL_DATABASE: hoge_db
        MYSQL_ROOT_PASSWORD: password
      ports:
        - 3306:3306
      expose:
        - '3306'
      volumes:
        - ./db/mysql_init:/docker-entrypoint-initdb.d
        - ./db/mysql_data:/var/lib/mysql
      tty: true

タグ

--privileged, -Command, almalinux, default-authentication-plugin, docker, Environment, example.com, expose, hostname, init, latest, MYSQL, password, ports, restart, sbin, services, tty, volumes,

dockerでlaravel環境構築したお話。 #hosts

2022.12.08

Logging

おはようございます、今日は早朝に明日の記事を書いています😆。

さて、dockerでlaravel環境構築したお話を書いていきます、Dockerの環境でApacheをインストールし、バーチャルホストを設定してwindows側のhostsも変更しDocker側のhostsも設定、起動確認も取れたので、一旦Dockerを終了し再度立ち上げるとDocker側のhostsが初期値に戻っている🤔。

これDockerの仕様らしいので、下記のようにdocker-compose.ymlを設定(extra_hosts)するか、Docker runでコンテナを立ち上げる場合はパラメーター–add-hostを付与してあげないといけない😳。

version: "3"
services:
  web:
    image: almalinux:latest
    container_name: Apache_v2.4
    ports:
      - 80:80
    privileged: true
    command: /sbin/init
    extra_hosts:
      - "example1.com:127.0.0.1"
      - "example2.com:127.0.0.1"
    volumes:
      - E:\var\www\html:/var/www/html
docker run --add-host=example1.com:127.0.0.1 .....

尚、Docker側のhostsを変更しないまま、立ち上げてもLaravelは動かないと思います。何故、動かないかはここでは割愛させて頂きます🙇。

タグ

--add-host, , almalinux, ap, Apache, container, docker, docker-compose, extra, hosts, image, Laravel, latest, name, quot, run, services, Version, web, Windows, yml, インストール, お話, これ, こんてな, バーチャル, パラメーター, ホスト, 一旦, 下記, 今日, 仕様, 付与, , 再度, 初期, 場合, 変更, 早朝, 明日, 構築, 環境, 確認, 終了, 記事, 設定, 起動,

Dockerは楽だなという事を今頃理解しましたよ。 #vbox #docker

2022.10.03

Logging

おはようございます、月曜日の朝はテンション低めな方も多いはず😇。

さて、今日は先週の木曜日と金曜日にふと今後のためにDockerをもう少し触ってみようと思い作業終了後触ってみました、触れて気づいた事は開発環境を作るのがとても楽だということ(気づくの遅い?🫠)。自分は昔の人間なのでvisualboxばかり触っていたのですがDockerは素晴らしい。サーバー周りが得意な人にイメージを作ってもらってそれを共有すれば皆、同じ環境下で開発が出来るので良いという事に今頃気づいた・・・。

 docker run -it -d -v C:\var\www\html\:/var/www/html --privileged -p 80:80 --name こんてな命名 イメージid /sbin/init

※Visualboxでも可能ですけどね。Dockerのだとそこが楽だしマウント(フォルダ共有)もスムーズに行くので自分は良いなと感じました。

ちょっと残念だった点は自宅で作業している中、バッファローのNAS🍆に作業ファイルを入れているのですが、それとは共有出来なかった点です、対応として実PCをrobocopyしてNASと同期を取るという形にしました。これで問題はなくテスト環境下で開発ができます。尚、高級なNASではそういう問題なく上手くいくそうですよ。※NASはバックアップデータになりました。

robocopy <コピー元> <コピー先> /E /DCOPY:DAT

尚、mirのオプションにしなかったのには理由があります。コピー元のファイルが消えたり、ディレクトリが破損した場合、コピー先のファイルやディレクトリが消えて無くなるらしいので・・・。完璧なミラーリングは辞めました。

こんな感じで快適なテスト環境が作れます(上記のコマンド参考に)。

タグ

--privileged, -p, -v, 80, D-, docker, html, ID, init, IT, name, run, sbin, var, vbox, Visualbox, www, イメージ, こと, こんてな, サーバー, スムーズ, そこ, それ, ため, テンション, パス, フォルダ, マウント, , , 人間, 今後, 今日, 今頃, 低め, 作業, 先週, 共有, 可能, 周り, 命名, 得意, , , 月曜日, , 木曜日, 理解, 環境, , 終了, 自分, , 金曜日, 開発,

今頃になってdocker(ドッカー)を勉強していたりしている。

2022.04.30

Logging

おはよう御座います。4月も今日が最後になってしまいました。

皆さんGW(ゴールデンウィーク)は何処か行きますか?、自分はしれっと仕事しているかも知れません。明日は休みですが・・・。

さて、今頃になってdocker(ドッカー)を勉強していたりしてします。dockerとはなんぞやという人はエンジニアでは恐らくないと思います😭。知らない方はググってくださいな。

今までdockerなんて使わなかった、バーチャルボックスがあれば何でも出来ると今でも思っていますが、まぁ一応、dockerも触らないといけないなとか思いましてdockerを始めました。

dockerでイメージを作ってdocker Hubで公開しようと思います。公開する内容は、PHP5系から8系までの環境を構築出来る提供するつもりです。

公開したら追記としてURLを記載しますので、しばしお待ち下さい。来月の半ばまでには構築出来る環境を提供するつもりです。

尚、dockerのCUIなどの操作方法はこちらを参照すると良いですよ。

追記出来ました(5月を待たずして):https://hub.docker.com/r/zip358com/rockylinux-php-56-81-apache

docker pull zip358com/rockylinux-php-56-81-apache
docker run -d -p 80:80 --privileged --name 任意のコンテナ名 zip358com/rockylinux-php-56-81-apache /sbin/init

cgi-binを見てください。PHP5.6からPHP8.1まであります😌。

Apacheの設定、php-cgiを使用する方法はこんな感じです😀

<Directory "/var/www/cgi-bin">
    AllowOverride All
    Options FollowSymLinks
    Order allow,deny
    Allow from all
</Directory>
Action php-cgi-7.1.9 /cgi-bin/php-cgi-7.1.9
<Directory "/var/www/html/xxxx.site">
    Options +ExecCGI
    AddHandler php-cgi-7.1.9 .php .html
    AddType application/x-httpd-php .php
</Directory>

タグ

4, 5, 8, docker, GW, Hub, php, url, イメージ, エンジニア, お待ち, カー, ゴールデンウィーク, しれっと, つもり, バーチャル, ボックス, , , 今日, 今頃, 仕事, 休み, 公開, 内容, 勉強, 半ば, 提供, , 明日, 最後, 来月, 構築, 環境, 皆さん, 自分, 記載, 追記,