Shopware

前回はDenによるShopware6.5の環境構築についてご紹介しました。

今回は、Shopware公式でも紹介されている、「Dockware」での構築を紹介します。

DockwareはShopwareの環境が既にインストールされているDockerイメージです。

Dockwareは構築だけなら数秒でできるところが魅力的ですが、開発する際変更したほうが良い箇所がありましたので、そこも踏まえ紹介します。

実行環境

WSL2: 1.2.5.0
Ubuntu: 22.04
dockware/dev: 6.5.2.1

環境構築

すぐにShopwareを試したい場合、下記のコマンドにより1分足らずで完了できます。

docker run --rm -p 80:80 dockware/dev:latest

 

今回はdockware/devイメージをそのまま使うのではなく、新しいイメージをビルドします。

dockware内ではwww-data(33:33)がユーザーとして設定されていますが、ホストのユーザーは1000:1000であることが多いかと思われます。

両者が異なると、ホスト側で作成したファイルが原因でファイルパーミッションの問題が発生してしまうため、ホストのユーザーと合わせます。

Dockerfileを作成し、下記のように記述します。(記事執筆時の最新バージョンは6.5.2.1です。)

FROM dockware/dev:6.5.2.1
USER root
RUN groupmod -g 1000 www-data && usermod -u 1000 www-data \
&& chmod 0755 ~www-data \
&& mkdir -p /var/www/html \
&& chown www-data:www-data /var/www/html \
&& echo "www-data ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/nopasswd
USER www-data

次に、同じディレクトリ下にdocker-compose.ymlを作成し、下記のように記述します。

version: "3"
services:
shopware:
build: .
container_name: shopware
ports:
- "81:80"
  - "3306:3306"
 - "22:22"
 - "8888:8888"
 - "9999:9999"
volumes:
- "db_volume:/var/lib/mysql"
networks:
- web
environment:
- PHP_VERSION=8.1
volumes:
db_volume:
driver: local
networks:
web:
external: false

portsの部分はすでにホスト側で使っているポートがある場合もあると思います。私の場合、80番ポートはDenのtraefikが使用しているため、81に変更しています。左側の数字は適宜変更してください。

dockerコンテナを立ち上げます。

docker-compose up -d

dockwareには/var/www/html/以下のファイルも全て梱包されているため、ファイルをホスト側にコピーし、それをbind mountingでコンテナ内と同期させます。

srcディレクトリを作成し、その中にコンテナ内のShopwareをコピーします。

docker cp shopware:/var/www/html/. ./src

docker-compose.ymlに下記行を追記します。

volumes:
- "db_volume:/var/lib/mysql"
- "./src:/var/www/html" <-この行

dockerコンテナを再起動します。

docker-compose up -d

shopwareコンテナ内に入ります。

docker-compose exec shopware bash

APP_URLを変更します。(80番ポートから変更した場合)

perl -pi -e 's#^APP_URL.*#APP_URL=http://localhost:81#' .env

既にデモデータが作成されていますが、80番ポートから変更した場合、sales channelのドメイン名が異なるため変更します。

bin/console sales-channel:update:domain localhost:81

ここまででShopwareのインストールは完了です。
下記のURLからフロント画面、管理画面が表示されることを確認してみましょう。

http://localhost:81 (フロント画面)
http://localhost:81/admin (管理画面)

尚、管理画面は下記のログイン情報で入ることができます。

Username: admin
Password: shopware

以下の画像の通りに表示されれば成功です。

フロント画面:

 

 

管理画面:

次回予告

今回はDockwareによるShopware6.5系のインストール方法をご紹介しました。

次回はDevenvによるShopware6.5系のインストール方法をご紹介します。