Skip to content

Commit e5fa0b9

Browse files
youngminssclaude
andauthored
fix: Docker build-args로 환경 변수 전달 방식 변경 (#77)
- Dockerfile에서 ARG로 환경 변수 받아서 .env.production 생성 - 워크플로우에서 build-args로 secrets 전달 - 파일 복사 대신 명시적 build-args 사용으로 안정성 향상 Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent df81c64 commit e5fa0b9

File tree

3 files changed

+22
-28
lines changed

3 files changed

+22
-28
lines changed

.github/workflows/development-deploy.yml

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,6 @@ jobs:
4040
if: steps.changes.outputs.client == 'true' || steps.changes.outputs.nginx == 'true'
4141
uses: docker/setup-buildx-action@v3
4242

43-
- name: Create .env.production
44-
if: steps.changes.outputs.client == 'true'
45-
run: |
46-
echo "NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}" > .env.production
47-
echo "NEXT_PUBLIC_AWS_S3=${{ secrets.NEXT_PUBLIC_AWS_S3 }}" >> .env.production
48-
echo "NEXT_PUBLIC_GTM_ID=${{ secrets.NEXT_PUBLIC_GTM_ID }}" >> .env.production
49-
echo "NEXT_PUBLIC_GA_ID=${{ secrets.NEXT_PUBLIC_GA_ID }}" >> .env.production
50-
51-
- name: Debug .env.production
52-
if: steps.changes.outputs.client == 'true'
53-
run: |
54-
echo "=== .env.production file exists ==="
55-
ls -la .env.production
56-
echo "=== Variable names in .env.production ==="
57-
cut -d'=' -f1 .env.production
58-
echo "=== Check value lengths ==="
59-
while IFS='=' read -r key value; do
60-
echo "$key length: ${#value}"
61-
done < .env.production
62-
6343
- name: Build and Push Client image
6444
if: steps.changes.outputs.client == 'true'
6545
uses: docker/build-push-action@v5
@@ -69,6 +49,11 @@ jobs:
6949
file: ./docker/client/Dockerfile
7050
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/yogieat-client:latest
7151
no-cache: true
52+
build-args: |
53+
NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}
54+
NEXT_PUBLIC_AWS_S3=${{ secrets.NEXT_PUBLIC_AWS_S3 }}
55+
NEXT_PUBLIC_GTM_ID=${{ secrets.NEXT_PUBLIC_GTM_ID }}
56+
NEXT_PUBLIC_GA_ID=${{ secrets.NEXT_PUBLIC_GA_ID }}
7257
7358
- name: Build and Push Nginx image
7459
if: steps.changes.outputs.nginx == 'true'

.github/workflows/production-deploy.yml

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,6 @@ jobs:
4040
if: steps.changes.outputs.client == 'true' || steps.changes.outputs.nginx == 'true'
4141
uses: docker/setup-buildx-action@v3
4242

43-
- name: Create .env.production
44-
if: steps.changes.outputs.client == 'true'
45-
run: |
46-
echo "NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL_PROD }}" > .env.production
47-
echo "NEXT_PUBLIC_AWS_S3=${{ secrets.NEXT_PUBLIC_AWS_S3 }}" >> .env.production
48-
echo "NEXT_PUBLIC_GTM_ID=${{ secrets.NEXT_PUBLIC_GTM_ID_PROD || secrets.NEXT_PUBLIC_GTM_ID }}" >> .env.production
49-
echo "NEXT_PUBLIC_GA_ID=${{ secrets.NEXT_PUBLIC_GA_ID_PROD || secrets.NEXT_PUBLIC_GA_ID }}" >> .env.production
50-
5143
- name: Build and Push Client image
5244
if: steps.changes.outputs.client == 'true'
5345
uses: docker/build-push-action@v5
@@ -58,6 +50,11 @@ jobs:
5850
tags: ${{ secrets.DOCKER_HUB_USERNAME }}/yogieat-client:latest
5951
cache-from: type=gha
6052
cache-to: type=gha,mode=max
53+
build-args: |
54+
NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL_PROD }}
55+
NEXT_PUBLIC_AWS_S3=${{ secrets.NEXT_PUBLIC_AWS_S3 }}
56+
NEXT_PUBLIC_GTM_ID=${{ secrets.NEXT_PUBLIC_GTM_ID_PROD || secrets.NEXT_PUBLIC_GTM_ID }}
57+
NEXT_PUBLIC_GA_ID=${{ secrets.NEXT_PUBLIC_GA_ID_PROD || secrets.NEXT_PUBLIC_GA_ID }}
6158
6259
- name: Build and Push Nginx image
6360
if: steps.changes.outputs.nginx == 'true'

docker/client/Dockerfile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ WORKDIR /app
1616
COPY --from=deps /app/node_modules ./node_modules
1717
COPY . .
1818

19+
# Build arguments for environment variables
20+
ARG NEXT_PUBLIC_API_URL
21+
ARG NEXT_PUBLIC_AWS_S3
22+
ARG NEXT_PUBLIC_GTM_ID
23+
ARG NEXT_PUBLIC_GA_ID
24+
25+
# Create .env.production from build args
26+
RUN echo "NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}" > .env.production && \
27+
echo "NEXT_PUBLIC_AWS_S3=${NEXT_PUBLIC_AWS_S3}" >> .env.production && \
28+
echo "NEXT_PUBLIC_GTM_ID=${NEXT_PUBLIC_GTM_ID}" >> .env.production && \
29+
echo "NEXT_PUBLIC_GA_ID=${NEXT_PUBLIC_GA_ID}" >> .env.production
30+
1931
ENV NEXT_PRIVATE_STANDALONE=true
2032

2133
RUN corepack enable pnpm && pnpm run build;

0 commit comments

Comments
 (0)