質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

2回答

1846閲覧

docker-compose.ymlのservices下に記述された各サービス名の意味

i_dont_know0

総合スコア4

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/03/30 05:01

前提・実現したいこと

Laravelの環境をDockerで構築する、ということを試みているものです。

その際、こちらのリポジトリからフォルダを引っ張ってきたのですが、docker-compose.ymlに書いてある記述で不明な点があるので質問させていただきました。

services下にappとwebがあると思うのですが、どういう違いがあるのかがわかりません。

.envファイルにもポート番号が別々に定義されており、それがdocker-compose.ymlでも使用されています。

app, web, db, node...など、それぞれがイメージ(サービス)単位で分けられているのことはわかるのですが、具体的にappとwebはどう違うのでしょうか。

該当のソースコード

yml

1version: "3" 2services: 3 app: 4 build: 5 context: ./docker/php 6 args: 7 - TZ=${TZ:-Asia/Tokyo} 8 ports: 9 - ${APP_PORT:-18000}:8000 10 volumes: 11 - ${PROJECT_PATH:-./src}:/work 12 - ./docker/ash:/etc/profile.d 13 - ./docker/php/psysh:/root/.config/psysh 14 - ./logs:/var/log/php 15 - ./docker/php/php.ini:/usr/local/etc/php/php.ini 16 working_dir: /work 17 environment: 18 - DB_CONNECTION=mysql 19 - DB_HOST=db 20 - DB_DATABASE=${DB_NAME:-homestead} 21 - DB_USERNAME=${DB_USER:-homestead} 22 - DB_PASSWORD=${DB_PASS:-secret} 23 - TZ=${TZ:-Asia/Tokyo} 24 - MAIL_HOST=${MAIL_HOST:-mail} 25 - MAIL_PORT=${MAIL_PORT:-1025} 26 - CACHE_DRIVER=redis 27 - SESSION_DRIVER=redis 28 - QUEUE_DRIVER=redis 29 - REDIS_HOST=redis 30 31 web: 32 image: nginx:1.17-alpine 33 depends_on: 34 - app 35 ports: 36 - ${WEB_PORT:-10080}:80 37 volumes: 38 - ${PROJECT_PATH:-./src}:/work 39 - ./logs:/var/log/nginx 40 - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf 41 environment: 42 - TZ=${TZ:-Asia/Tokyo} 43 44 db: 45 image: mysql:8.0 46 volumes: 47 - db-store:/var/lib/mysql 48 - ./logs:/var/log/mysql 49 - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf 50 environment: 51 - MYSQL_DATABASE=${DB_NAME:-homestead} 52 - MYSQL_USER=${DB_USER:-homestead} 53 - MYSQL_PASSWORD=${DB_PASS:-secret} 54 - MYSQL_ROOT_PASSWORD=${DB_PASS:-secret} 55 - TZ=${TZ:-Asia/Tokyo} 56 ports: 57 - ${DB_PORT:-13306}:3306 58 59 db-testing: 60 image: mysql:8.0 61 volumes: 62 - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf 63 tmpfs: 64 - /var/lib/mysql 65 - /var/log/mysql 66 environment: 67 - MYSQL_DATABASE=${DB_NAME:-homestead} 68 - MYSQL_USER=${DB_USER:-homestead} 69 - MYSQL_PASSWORD=${DB_PASS:-secret} 70 - MYSQL_ROOT_PASSWORD=${DB_PASS:-secret} 71 - TZ=${TZ:-Asia/Tokyo} 72 ports: 73 - ${DB_TESTING_PORT:-13307}:3306 74 75 node: 76 image: node:12.14-alpine 77 tty: true 78 volumes: 79 - ${PROJECT_PATH:-./src}:/work 80 working_dir: /work 81 82 redis: 83 image: redis:5.0-alpine 84 volumes: 85 - redis-store:/data 86 87 mail: 88 image: mailhog/mailhog 89 ports: 90 - ${MAILHOG_PORT:-18025}:8025 91 92volumes: 93 db-store: 94 redis-store:

試したこと

「docker-compose app web」、「docker-compose サービス名 違い」など、いろいろ検索してみましたが、具体的な説明はなかったと思います...。

お手数お掛け致しますが、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Dockerは不勉強で詳しくないのでざっくりですが
appやwebのサービス名は自由に名前が付けられたはずです

build:
context: ./docker/php
とあるので、自前でphpのDockerファイルを用意してビルドしていると思います
appなのはアプリケーションだからではないでしょうか

webですがimageにnginxとあるのでwebサーバーとしてnginxのイメージを利用するようです

なので、appではphp(Laravel)を使う設定、webではnginxの設定だと思います

抽象的で申し訳ないですが

投稿2020/03/30 05:26

natsume2233

総合スコア225

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

端的にいえば、イメージやコンテナが作成される単位です。
このサービス名ごとにイメージが作成され、そのイメージをもとにコンテナが作成されます。
が、これはあくまでdocker-compose上の名称なので、実際に作成されるイメージ名・コンテナ名・ホスト名とは一致しません。
もし実際にこれで作成されるコンテナ間で通信をする場合などは、container_nameやhostnameで名称を具体的に定義すべきです。

投稿2021/08/18 06:46

KeithF

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問