Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
**/node_modules
**/dist
**/outputs
**/.git
7 changes: 7 additions & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
SHARED_WORKSPACE_HOST=workspace
SHARED_WORKSPACE_CONTAINER=/opt/workspace
# Dockerコンテナ起動時に使用するツールがあるディレクトリ
# DOCKER_TOOLS_HOST=docker/dev_nodejs/tools

APPNAME=dev_nodejs
NODE_VERSION=20.13.1
144 changes: 144 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# Mac
.DS_Store


# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Optional stylelint cache
.stylelintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variable files
# .env # Dockerコンテナ起動に使用するため一旦コメントアウト.
.env.development.local
.env.test.local
.env.production.local
.env.local

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# vuepress v2.x temp and cache directory
.temp
.cache

# Docusaurus cache and generated files
.docusaurus

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

# python
__pycache__/
.venv/

# Docker
## workspace下に置いたソースをコミットしないようにする
workspace/*
!workspace/README.md

Empty file added README-PJ.md
Empty file.
100 changes: 100 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,102 @@
# docker_sandbox
Dockerコンテナを使った開発等ができるように整備する汎用レポジトリ.

## 使い方:共用のDockerfile等を追加・修正する人
基本的にdevブランチから共用のDockerfileを追加・修正するためのブランチを切って作業すること
1. devブランチからブランチ`feature/{任意のブランチ名}`を切る
1. ブランチ`feature/{任意のブランチ名}`で,追加・修正をするディレクトリ`docker/{Dockerサービス名}/`の中の共用のDocker環境の設定ファイル等に対して作業する
1. 必要あれば`docker/{Dockerサービス名}/README.md`を作成・更新する
1. 作業が完了したらブランチ`dev`へのプルリクを投げる
1. 必要あればブランチ`dev`のブランチ`main`へのプルリクを投げる

## 使い方:用意済みのDockerfileを使用してPJ用のDocker環境を作成・修正する人
基本的にmainブランチからPJごとのDocker環境設定するためのブランチを切って作業すること
1. mainブランチからブランチ`pj_{PJ名}_{Docker環境名}`を切る
1. ブランチ`pj_{PJ名}_{Docker環境名}`で,PJの開発やステージングテストに必要なDocker環境の設定等をしてpushしておく
1. 必要あれば`README-PJ.md`で用意したPJ用のDocker環境の使い方を記載する

## 使い方:用意済みのPJ用のDocker環境を使用する人
1. 用意されたブランチ`pj_{PJ名}_{Docker環境名}`をクローンする
1. `README-PJ.md`に記載されたDocker環境の使い方を参考にDocker環境を起動して作業する

## Appendix:構成
```
├ docker_sandbox/
├ docker/
├ {Dockerサービス名}/
├ Dockerfile
├ README.md [`docker-compose.yml`・`.env`・`.dockerignore`のサンプル,起動手順を記載]
├ dev_nodejs/ [例:NodeJS(バージョン選択可)開発環境]
├ Dockerfile
├ README.md
├ prd_centos/ [例:CentOS(バージョン選択可)本番想定サーバ]
├ Dockerfile
├ README.md
├ postgresql/ [例:PostgreSQL(バージョン選択可)]
├ Dockerfile
├ README.md
├ workspace/
├ README.md
├ [git cloneするなどしてソースを用意する]
├ docker-compose.yml
├ .env
```

## Appendix:Gitflowイメージ
- 登場人物(ブランチ)
- ブランチ`main`:用意済みDockerfileを使用する開発者がPJにおけるDocker環境を用意するための元ブランチ
- ブランチ`dev`:本レポジトリの共用部分に関する開発ブランチ
- ブランチ`feature/setup_common_docker_dev_nodejs`:NodeJS開発に関する共用のDockerfileを追加するブランチ
- ブランチ`pj_hoge_dev_nodejs`:PJ「hoge」におけるNodeJS開発のためのDocker環境を整備しPJ「hoge」の開発メンバに展開するブランチ
- ブランチ`feature/setup_common_docker_postgresql`:PostgreSQL開発に関する共用のDockerfileを追加するブランチ
- ブランチ`pj_fuga_dev_nodejs`:PJ「fuga」におけるNodeJS開発のためのDocker環境を整備しPJ「fuga」の開発メンバに展開するブランチ
- ブランチ`pj_fuga_dev_postgresql`:PJ「fuga」におけるPostgreSQL開発のためのDocker環境を整備しPJ「fuga」の開発メンバに展開するブランチ
- ブランチ`feature/fix_common_docker_dev_nodejs`:NodeJS開発に関する共用のDockerfileを修正するブランチ
```mermaid
gitGraph
commit
branch dev
checkout dev
commit
commit
branch feature/setup_common_docker_dev_nodejs
checkout feature/setup_common_docker_dev_nodejs
commit
commit
commit
checkout dev
merge feature/setup_common_docker_dev_nodejs
checkout main
merge dev
branch pj_hoge_dev_nodejs
checkout pj_hoge_dev_nodejs
commit
commit
checkout dev
branch feature/setup_common_docker_postgresql
commit
checkout dev
merge feature/setup_common_docker_postgresql
checkout main
merge dev
checkout main
branch pj_fuga_dev_nodejs
checkout pj_fuga_dev_nodejs
commit
checkout main
branch pj_fuga_dev_postgresql
checkout pj_fuga_dev_postgresql
commit
commit
checkout dev
branch feature/fix_common_docker_dev_nodejs
checkout feature/fix_common_docker_dev_nodejs
commit
checkout dev
merge feature/fix_common_docker_dev_nodejs
checkout main
merge dev
checkout pj_fuga_dev_nodejs
merge main
commit
```
23 changes: 23 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
version: "3"

services:
dev_nodejs:
build:
context: .
dockerfile: ./docker/dev_nodejs/Dockerfile
args:
APPNAME: ${APPNAME}
SHARED_WORKSPACE_HOST: ${SHARED_WORKSPACE_HOST}
SHARED_WORKSPACE_CONTAINER: ${SHARED_WORKSPACE_CONTAINER}
# DOCKER_TOOLS_HOST: ${DOCKER_TOOLS_HOST}
NODE_VERSION: ${NODE_VERSION}
image: ${APPNAME}
container_name: ${APPNAME}
ports:
# フロントエンドlocalhost用
- 8001:8001
# Storybook用
- 8106:8106
volumes:
- ./${SHARED_WORKSPACE_HOST}:${SHARED_WORKSPACE_CONTAINER}
tty: true
26 changes: 26 additions & 0 deletions docker/dev_nodejs/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
ARG NODE_VERSION

FROM node:${NODE_VERSION}

ARG APPNAME
ARG SHARED_WORKSPACE_HOST
ARG SHARED_WORKSPACE_CONTAINER
# ARG DOCKER_TOOLS_HOST

# COPY ./${DOCKER_TOOLS_HOST} /opt/docker/tools

RUN apt-get update \
&& apt-get install -y \
vim \
wget \
curl \
git \
&& echo ${NODE_VERSION} \
&& node --version \
&& npm --version \
&& npx --version \
# npmが古い場合があるので再インストール
&& npm install -g npm \
&& npm --version

WORKDIR ${SHARED_WORKSPACE_CONTAINER}
Loading