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

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

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

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Laravel

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

5198閲覧

AWS ECS(Fargate)でRDSとの接続ができない

maaaaakoto

総合スコア13

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Laravel

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

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

1クリップ

投稿2020/09/06 09:56

前提・実現したいこと

Laravelで実装されたwebアプリケーションでECS(Fargate)経由でRDSと接続がしたい。

発生している問題・エラーメッセージ

php_network_getaddresses: getaddrinfo failed: Name does not resolve (SQL文)

試したこと

同一VPC内に構築した踏み台EC2にて、dockerコンテナを構築、そのコンテナ内からRDSの接続確認はできています。
そのため、ECSからRDSへの接続のみができていない状態です。

AWSのコンソールにて環境変数設定済み
(下記画像の右側にはvalueが入っていますがセキュリティの都合上画像をカットさせていただいております)
(上記踏み台EC2と同じvalueを設定できているかの確認いたしました。)
イメージ説明

docker

1version: "3" 2services: 3 app: 4 build: 5 context: . 6 dockerfile: ./docker/php/Dockerfile 7 args: 8 - TZ=${TZ} 9 ports: 10 - ${APP_PORT}:9000 11 volumes: 12 - ./live:/work 13 - ./logs:/var/log/php 14 - ./docker/php/php.ini:/usr/local/etc/php/php.ini 15 working_dir: /work 16 environment: 17 # ここは要設定 18 - DB_CONNECTION={DB_CONNECTION} 19 - DB_HOST=${DB_HOST} 20 - DB_DATABASE=${DB_DATABASE} 21 - DB_USERNAME=${DB_USERNAME} 22 - DB_PASSWORD=${DB_PASSWORD} 23 - TZ=${TZ:-Asia/Tokyo} 24 25 web: 26 build: 27 context: . 28 dockerfile: ./docker/nginx/Dockerfile 29 depends_on: 30 - app 31 ports: 32 - ${WEB_PORT:-80}:80 33 volumes: 34 - ./live:/work 35 - ./logs:/var/log/nginx 36 - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf 37 environment: 38 - TZ=${TZ:-Asia/Tokyo} 39 40volumes: 41 db-store: 42

Dockerfile

1FROM php:7.4-fpm-alpine 2 3ARG PSYSH_DIR=/usr/local/share/psysh 4ARG PHP_MANUAL_URL=http://psysh.org/manual/ja/php_manual.sqlite 5 6ARG TZ 7 8ENV COMPOSER_ALLOW_SUPERUSER 1 9ENV COMPOSER_HOME /composer 10 11RUN set -eux && \ 12 apk update && \ 13 apk add --update --no-cache --virtual=.build-dependencies \ 14 autoconf \ 15 gcc \ 16 g++ \ 17 make \ 18 tzdata && \ 19 apk add --update --no-cache \ 20 icu-dev \ 21 oniguruma-dev \ 22 libzip-dev && \ 23 cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \ 24 echo ${TZ} > /etc/timezone && \ 25 pecl install xdebug && \ 26 apk del .build-dependencies && \ 27 docker-php-ext-install intl pdo_mysql mbstring zip bcmath && \ 28 docker-php-ext-enable xdebug && \ 29 mkdir $PSYSH_DIR && wget $PHP_MANUAL_URL -P $PSYSH_DIR && \ 30 curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && \ 31 composer config -g repos.packagist composer https://packagist.jp && \ 32 composer global require hirak/prestissimo 33 34RUN apk add --no-cache freetype libpng libjpeg-turbo freetype-dev libpng-dev libjpeg-turbo-dev && \ 35 docker-php-ext-configure gd \ 36 --with-jpeg=/usr/include/ \ 37 --with-freetype=/usr/include/ && \ 38 NPROC=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || 1) && \ 39 docker-php-ext-install -j${NPROC} gd && \ 40 apk del --no-cache freetype-dev libpng-dev libjpeg-turbo-dev 41 42ADD ./live /work 43 44WORKDIR /work 45 46RUN chmod -R 777 /work/storage \ 47 /work/bootstrap/cache 48 49ARG DB_CONNECTION 50ARG DB_HOST 51ARG DB_DATABASE 52ARG DB_USERNAME 53ARG DB_PASSWORD 54RUN composer install 55RUN php artisan key:generate 56RUN php artisan config:clear 57RUN php artisan config:cache 58RUN composer dump-autoload 59# RUN php artisan migrate 60# RUN php artisan db:seed 61 62EXPOSE 9000

何か、足りなければ公開できる範囲で公開させていただきますのでリクエスト投げてください。。
前提の質問として、
AWSのコンソールにて設定した環境変数は、プロジェクトの.envファイルに書き込まれるのかどうか??
というのをお伺いしたいです。
下記にファイル構成を記述させていただきます。。

| ├── docker | | │ ├── nginx | | ├── Dockerfile │ │ └── default.conf │ └── php │ ├── Dockerfile │ └── php.ini ├── docker-compose.yml | ├── .env | ├── .gitignore | └── live

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

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

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

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

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

yu_1985

2020/09/07 01:33

> AWSのコンソールにて設定した環境変数は、プロジェクトの.envファイルに書き込まれるのかどうか?? 少なくとも、コンソールで設定した環境変数が特別な処理なしにファイルを上書きすることはないと思います。
maaaaakoto

2020/09/07 03:38

なるほど、ありがとうございます。 上書きするような処理を試行錯誤します!!
yu_1985

2020/09/07 03:43

設定済みの環境変数はコンテナ内に展開されるものなので、.envに書いても仕方ないと思うのですが…。 .envは環境変数を設定するためのものなので、環境変数を受け取って環境変数を設定するのは冗長に思えます。 ちょっと気になるのが、現状既に.envに設定している変数(何が設定してあるかわかりませんが)でコンテナの変数を上書きしてしまっていて想定通りの動きをしていない、ということになってないかです。
maaaaakoto

2020/09/07 10:29

おそらくその挙動をしていると調べていくうちに、感じました。 コンテナ定義に個別の環境変数が指定されている場合は、環境ファイルに含まれる変数よりも優先されるとのことですので、Dockerfileから環境変数を削除しました。 ご教示いただきありがとうございます。
guest

回答1

0

自己解決

@yu_1985さんの助言から
Dockerfileに不要な環境変数を削除いたしました。
また、ゴリ押しで.envファイルをcopyする手法もございます。
ありがとうございました。

投稿2020/09/07 10:31

maaaaakoto

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問