【Docker】【Laradock】How to add SSL to APACHE in laradock

Here's the solution

1) Add below to your laradock -> apache2 -> Dockerfile

#ssl certificate
RUN openssl genrsa -out "/etc/ssl/private/mysite.key" 2048 \
    && openssl req -new -key "/etc/ssl/private/mysite.key" -out "/etc/ssl/certs/mysite.csr" -subj "/CN=localhost/O=LGS/C=JP" \
    && openssl x509 -req -days 365 -in "/etc/ssl/certs/mysite.csr" -signkey "/etc/ssl/private/mysite.key" -out "/etc/ssl/certs/mysite.crt"

RUN sed -i 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/default-ssl.conf \
    && sed -i 's!/etc/ssl/certs/ssl-cert-snakeoil.pem!/etc/ssl/certs/mysite.crt!g' /etc/apache2/sites-available/default-ssl.conf \
    && sed -i 's!/etc/ssl/private/ssl-cert-snakeoil.key!/etc/ssl/private/mysite.key!g' /etc/apache2/sites-available/default-ssl.conf
    
RUN a2enmod ssl \
    && a2ensite default-ssl.conf

2) In your laradock -> docker-compose.yml, make sure apache2 ports accept 443

      ports:
        - "${APACHE_HOST_HTTP_PORT}:80"
        - "${APACHE_HOST_HTTPS_PORT}:443"

if old version or somehow you do not have 443 in ports, you can simply add it like below.

    ports:
      - 80:80
      - 443:443

3) build and up, and you good to go

docker-compose build

Have a happy docker life!

【Docker】【Laradock】Laradockのapache2でSSL自己証明書を設定してhttps通信を可能にする

今回は結構ややこしくて少しはまりましたが勉強になりました。
毎度ながらこのブログでは答えだけサクッと書きます。
詳細に関しては以下の記事が非常に丁寧に解説されていたのでご参考にください。

www.engilaboo.com

紹介しておいて↑この方のやり方とは少し違うんですが、やってることは同じです。

①laradockフォルダ配下に「apache2」フォルダ内、Dockerfile内に以下を追記する。場所はどこでもいいです。

#ssl certificate
RUN openssl genrsa -out "/etc/ssl/private/mysite.key" 2048 \
    && openssl req -new -key "/etc/ssl/private/mysite.key" -out "/etc/ssl/certs/mysite.csr" -subj "/CN=localhost/O=LGS/C=JP" \
    && openssl x509 -req -days 365 -in "/etc/ssl/certs/mysite.csr" -signkey "/etc/ssl/private/mysite.key" -out "/etc/ssl/certs/mysite.crt"

RUN sed -i 's!/var/www/html!/var/www/html/public!g' /etc/apache2/sites-available/default-ssl.conf \
    && sed -i 's!/etc/ssl/certs/ssl-cert-snakeoil.pem!/etc/ssl/certs/mysite.crt!g' /etc/apache2/sites-available/default-ssl.conf \
    && sed -i 's!/etc/ssl/private/ssl-cert-snakeoil.key!/etc/ssl/private/mysite.key!g' /etc/apache2/sites-available/default-ssl.conf
    
RUN a2enmod ssl \
    && a2ensite default-ssl.conf

②docker-compose.yml内で「apache2」で検索、最近のバージョンなら「ports:」が以下のようになってるかと思うが、

      ports:
        - "${APACHE_HOST_HTTP_PORT}:80"
        - "${APACHE_HOST_HTTPS_PORT}:443"

もし443の設定がなければベタ書きで書いてもOK

    ports:
      - 80:80
      - 443:443

③この状態でビルドしなおせばhttpsで表示できる

docker-compose build

ちなみに↑このやり方は以下を参考にしました~

github.com

Have a happy docker life!

【laravel】paginate()でエラーになる:Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php

Laravelで以下のような形でpaginateを書くとエラーになった。

$query = User::select('name')->whereColumn('id',1)->paginate(5);
return $query->get();

(エラーメッセージ)

Too few arguments to function Illuminate\Support\Collection::get(), 0 passed in /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php

調べてみるとどうやら「paginate()」には「get()」の機能も含まれており、get()した結果にまたget()する、みたいな意味になってしまうみたい。
以下のように書き直して無事取得できました!

$query = User::select('name')->whereColumn('id',1);
return $query->paginate(5);

【Docker】ERROR [internal] load metadata for docker.io/library/php:7.3.18 エラー解消法

新しいLaravel案件の環境構築でDcoker環境ファイル一式を渡されてとりあえず「docker-compose up -d」してみたら以下のようなエラーが出た。

ERROR [internal] load metadata for docker.io/library/php:7.3.18

見たことがないエラーだったけどググったらすぐ出てきた。以下、解決方法↓

1. DockerDesktopの設定画面を開く
f:id:daylambsbecomelions:20210527205322p:plain

2. Docker Engineメニューを選択

3. 「"insecure-registries"」の値を「["docker.io"]」に変更
f:id:daylambsbecomelions:20210527210550p:plain

4. 画面下「Apply&Restart」ボタンを押下したDocker再起動

これでもう一度「docker-compose up -d」したら無事行けました◎

【Selenium】How to solve "This version of ChromeDriver only supports Chrome version ***"

When running selenium I encountered the error message "This version of ChromeDriver only supports Chrome version 84", and here is how I solved.

1. Check the version of Google Chrome

google-chrome --version
(or if you haven't set a path, "/usr/bin/google-chrome --version")

In my case, the result of above command was like this.

Google Chrome 90.0.4430.212

2. Check the version of Chrome Driver supporting your Google Chrome version by checking the info below.
chromedriver.chromium.org

My version of Google Chrome was 90, so that the version of Chrome Driver is "ChromeDriver 90.0.4430.24" as below.
f:id:daylambsbecomelions:20210522114120p:plain

3. Download the required version of Chrome Driver

curl -O https://chromedriver.storage.googleapis.com/90.0.4430.24/chromedriver_linux64.zip

=>replace "90.0.4330.24" part accordingly

4. Unzip the zip file and move the unzipped file to bin folder

unzip chromedriver_linux64.zip
mv chromedriver /usr/local/bin/
rm chromedriver_linux64.zip

【AWS / Cloud9 / Lambda】Lambdaボタンがない

Cloud9からLambda関数を作成しようとググって見てると、cloud9の画面の右端に下図のようなLambdaボタンがあることが前提になってるんだけど、自分の画面では見当たらない。

f:id:daylambsbecomelions:20210425120809p:plain

(自分の画面)
f:id:daylambsbecomelions:20210425120930p:plain

色々触って、画面右上の設定ボタン→「AWS Settings」
f:id:daylambsbecomelions:20210425122018p:plain

AWS Toolkit」のチェックを外す
f:id:daylambsbecomelions:20210425122205p:plain

すると現れた!
f:id:daylambsbecomelions:20210425122508p:plain

こんなの一番よく使うんだから、最初から出しといてくれよ。。
ってことで一件落着