- 投稿日:2021-07-15T22:34:07+09:00
DockerでMySQL+Apache+EC-cube4を立ち上げる
ディレクトリ構造 mysqlとsrcフォルダは空で用意する。 srcフォルダにec-cubeのソースコードが入る。 Dockerfileでcomposerも入る。 docker ├── apache-php │ ├── 000-default.conf │ ├── Dockerfile │ └── php.ini ├── mysql ├── src └── docker-compose.yaml docker-compose.yaml apache-php以外のコンテナはイメージそのまま。 docker-compose.yaml version: "3" services: apache-php: build: ./docker/apache-php ports: - "8030:80" volumes: - ./src:/var/www/html mysql: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=db - MYSQL_USER=test - MYSQL_PASSWORD=test ports: - "3307:3306" phpmyadmin: image: phpmyadmin/phpmyadmin environment: - PMA_ARBITRARY=1 - PMA_HOST=mysql - PMA_USER=test - PMA_PASSWORD=test links: - mysql ports: - 4040:80 volumes: - ./phpmyadmin/sessions:/sessions mailcatcher: image: schickling/mailcatcher ports: - "1080:1080" - "1025:1025" apacheとphpの設定 EC-Cube特有なのは DocumentRoot /var/www/html/ec-cube/ の部分。 000-default.conf <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/ec-cube/ ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html/ec-cube/> AllowOverride All </Directory> </VirtualHost> FROM php:7.4-apache # コンテナでllが使えるようにする RUN echo -e "\n\ alias ll='ls -la --color'\n\ " >> /root/.bashrc # PHP.iniをコンテナに送り込む ADD php.ini /usr/local/etc/php/ # コンテナ内の000-default.confを上書きする。 ADD 000-default.conf /etc/apache2/sites-enabled/ # Composerのインストール RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php && ln -s /usr/bin/composer.phar /usr/bin/composer # ミドルウェアインストール RUN apt-get update \ && apt-get install -y \ git \ zip \ unzip \ vim \ libicu-dev \ libpng-dev \ libpq-dev \ less \ && docker-php-ext-install pdo_mysql mysqli intl # Laravelで必要になるmodRewriteを有効化する RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled RUN /bin/sh -c a2enmod rewrite php.ini [Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese" コンテナを立ち上げる docker-compose up -d --build コンテナに入ってEC-CUBEをインストールする。 docker ps で php-apacheのコンテナ名を調べて docker exec -it {コンテナ名かコンテナID} bash 2021年7月15日現在、このままではcompose installできない。 "ec-cube/plugin-installer": "~0.0.6 || の行を以下に修正。 composer.json "ec-cube/plugin-installer": "~0.0.6 || ^2.0@dev", composer update EC-CUBEのインストールコマンドを実行する。 bin/consoleがphp artisanのようなもの。 このコマンドが成功するとDBにEC-CUBE4用のテーブル作成とデモデータが投入される。 e:i は ec-cube:install コマンドの省略形 cd ec-cube/ bin/console e:i 上のコマンドを打つと質問されるので以下のように入力する。 mysql://{DBユーザ名}:{DBパスワード}@{mysqlコンテナ名}/{db名} {mysqlコンテナ名}の部分をlocalhostと書いている記事ばかりですが、それだとnot found exceptionでconnection refuseされました。 docker ps コマンドで出てくるコンテナ名を指定してください。 Database Url [sqlite:///var/eccube.db]: > mysql://root:root@ec-cube4_mysql_1/db Mailer Url [null://localhost]: > smtp://localhost:1025 Auth Magic [lsDLkCPPm1nBJQT3]: > localhost:8030(可変。docker-composeに書いたポート)にアクセス。 以上。
- 投稿日:2021-07-15T20:39:31+09:00
ECSのコンテナ内のディレクトリを、ローカルにコピーする
AWSのECSで、「コンテナ内の特定ディレクトリをローカルに落としたい!」という機会があったので書いときます。 sshをして、 ssh先にコピーをして、 ローカルに落とす。 そんな手順でやればできますね。 sshログイン $ ssh -i <キーのある場所>/<キーの名前> <インスタンスのユーザー名(ec2-userとか)>@<ssh先のパブリックIP or DNS> セキュリティグループでsshの設定をし忘れてると、Connection timed outになりますね。 dockerからssh先にコピー ssh先で $ docker ps $ pwd $ docker cp <dockerコンテナ名>:<docker内のコピーしたいディレクトリのパス> <ssh先のコピーファイルを仮置きするパス> docker cpコマンドはファイルでもディレクトリでもオプションなしで問題ないです。 ssh先からローカルに落としてくるコマンド ローカル環境で $ scp -i <キーのある場所>/<キーの名前> -r <ssh先のパブリックIP or DNS>:<ssh先のコピーファイルを仮置きするパス> <ローカルのファイルを置きたいパス> しょうもないのですが、sshしている中からscpコマンドを叩いて少しハマってました。 ssh: connect to host port 22: Connection timed outが出ていたので、「あれ?sshってそこまで遅いんだっけ?」とか思ってました...
- 投稿日:2021-07-15T20:11:38+09:00
[Docker + Rails] Webpackerのインストール時のエラー解決方法
概要 Docker + Rails環境でSprocketsからWebpackerに移行作業時にWebpackerをインストールするまでのエラーにハマってしまったため、解決方法を紹介します。 暫定的対応のため、本来のエラー解決方法をご存知の方はコメント下さると幸いです。 環境 ruby 2.6.3 Rails 5.2.3 docker エラーが起こるまで Dockerfileにyarnを使用するための記述追加 Gemfileにgem 'webpacker' 追加 docker-compose run web bundleにてgemインストール \ エラー発生 / webpack binstubs not found. Have you run rails webpacker:install ? Make sure the bin directory or binstubs are not included in .gitignore Exiting! ERROR: 1 エラー文にある rails webpacker:install はwebpackerのインストール完了後に実行するつもりだったし、 .gitignore にbin/以下を無視するような記述を加えてないし。。。という感じでハマりました。 解決方法 ① bin/ にwebpackという名前で空のファイルを生成後にdocker-compose run --rm web bundle実行。(webpack binstubs not found.と言われているので) \ エラー文が変わった! / Configuration config/webpacker.yml file not found. Make sure webpacker:install is run successfully before running dependent tasks ERROR: 1 ②エラー文に従い、config/webpacker.yml作成 ファイルの中身はgithubからコピペで。 ③ docker-compose run --rm web bundle実行。 gemインストール完了! ④docker-compose run --rm web bundle exec rails webpacker:install実行にて、Webpackerをインストール。 ①、②で作成したファイルを上書き出来ます。 以上が解決手順です。 終わりに 本来bin/webpackもwebpacker.ymlもwebpackerインストール時に自動生成されるもののため、何故手動生成する必要があったかモヤモヤしています。 もしわかる方いらっしゃいましたら教えてください!! 参考情報 https://qiita.com/junara/items/28fbc5e4d2ba6a162d24 Rails5.2 + Docker環境にVue.js (Webpacker) を導入する