ããã«å®å šãªäŸã®ãªããžããªããããŸãïŒ
https://github.com/devinrsmith/docker-compose-build-test
docker-compose build
ééã£ãŠäœ¿çšããŠããå Žåã¯ããç¥ãããã ããã
ãã¡ã€ã«åœ¢åŒã«åé¡ããããŸãã
.dockerignore
subdir/
ãsubdir
ãŸãã
.dockerignoreãdocker build -t subdir ../
ã®ã«ã docker-compose build
ã§ã¯æ©èœããªãã®ã¯ãªãã§ããïŒ
docker-compose1.2.0ãå®è¡ããŠãåãåé¡ãçºçããŸãã
ããã©ããã«ãŒãã«ããå®è¡ãããšãç¡èŠãã¡ã€ã«ããã«ãããã€ã¡ãŒãžããã«ããããŸãã
ãã ããdocker-composeã¯ãæ«å°Ÿã®ã¹ã©ãã·ã¥ã®æç¡ã«ããããããignoreãã¡ã€ã«ã䜿çšããŸããã
docker-pyã®åé¡ã®ããã§ãã https://github.com/docker/docker-py/pull/604ã§ä¿®æ£ãè¡ãããŠã
@aanandã¯https://github.com/docker/docker-py/pull/604ãåæ¢ãããã€ã«ã¹ããŒã³ããåé€ãããããã«èŠã
@thaJeztahäœæ¥ãç¶è¡ããããã«https://github.com/docker/docker-py/pull/721ãäœæããŸããã
ããã«ã¡ã¯ã
.dockerignoreã§1ã€ã®å¥åŠãªåé¡ã«çŽé¢ããŠããŸãïŒ
*.sh
!awesome/script.sh
docker buildã䜿çšãããšãã¹ãŠåé¡ãããŸããããdocker-composeã«ãawesome /script.shãã衚瀺ãããŸããã§ããã
ç§ã¯åãåé¡ã«ãããŸããïŒ
@twillouerã¯æ¢ç¥ã®ãã°ã§ããã httpsïŒ//github.com/docker/docker-py/pull/721ã§ä¿®æ£ãããŠãã1.5.0ã§ã¯äœæåŽã§ä¿®æ£ãããäºå®ã§ãã
ããããšãïŒ
äžéšã®ãã·ã³ã®ææ°ã®gitãã¹ã¿ãŒã§ããããã¯ãŸã å£ããŠããããã§ãã ãã®æ§æã§ã¯ã次ã®æ§æã®ãã·ã³ã§ã¯æ©èœããŸããã
Debian 8.2ãšã«ãŒãã«3.16.0ãlxc-dockerããŒãžã§ã³1.7.1ããã«ã786b29d
docker-composeã¯gitmasterãHEADã¯dabf1e8657674014a5bc89f99edbf2fe0629bb71ã«ãããŸã
.dockerignoreã¯ãdocker buildïŒå³åº§ã«å®è¡ãããïŒã§ã¯æ£åžžã«æ©èœããŸãããdocker-composeïŒããŸããŸãªåã«ã¢ããããŒããã¹ãã§ãªããã®ãã¢ããããŒãããïŒã§ã¯æ©èœããŸããã
ïŒ2100ãåç §ããŠãã ãã
ç§ãåãåé¡ãæ±ããŠããŸãã docker-composeã¯ã.dockerignoreããç¡èŠããŸãã ãdockerbuildãã¯æ£åžžã«æ©èœããŸãã
ã·ã¹ãã ïŒWindows 10
æšæ¥ãªãªãŒã¹ãããDockerToolboxã䜿çšããŠãåãåé¡ãçºçããŠããŸãã
.dockerignore
ãŸã åé¡ãçºçããŠããããã§ãã compose 1.5.0ã§ãããã®åé¡ãçºçããŠããå Žåã¯ããšã©ãŒãåçŸã§ããããã«ããµã³ãã«ã®.dockerignore
ãšãã£ã¬ã¯ããªæ§é ãå«ããŠãã ããã
å°ããªãŠãŒã¹ã±ãŒã¹ãæäŸããªãããšããè©«ã³ããŸããããããç§ãåé¡ã«æ°ä»ããæ¹æ³ã§ãïŒ
ç§ã®ãããžã§ã¯ãã«ã¯æ¬¡ã®package.json
ããããŸãã
{
"dependencies": {
"grunt-contrib-uglify": "^0.9.2"
}
}
ããã«ãç§ã¯ãããæã£ãŠããŸãdocker-compose.yml
ïŒ
web:
build: .
Dockerfile
ã¯æ¬¡ã®ããã«ãªããŸãã
FROM node:0.12
ç§ã®.dockerignore
ã¯1è¡ãå«ãŸããŠããŸãïŒæ«å°Ÿã«ã¹ã©ãã·ã¥ãè¿œå ããããšããŸããããåé¡ã¯è§£æ±ºããŸããã§ããïŒïŒ
node_modules
ä»ç§ã¯ããããšãã§ããŸã
> npm install
(...snip...)
> docker build .
Sending build context to Docker daemon 5.12 kB
çŽ æŽããããããã¯åäœããŸãã5 KiBã ããéãããŸãïŒ node_modules
ã¯åèšã§ããã10 MiBã§ãïŒã docker-compose
ã§Q:\sites\test
ïŒ
> npm install
(...snip...)
> docker-compose up
Building web
Traceback (most recent call last):
File "D:\opt\python\Scripts\docker-compose-script.py", line 9, in <module>
load_entry_point('docker-compose==1.5.0dev', 'console_scripts', 'docker-compose')()
File "D:\opt\python\lib\site-packages\compose\cli\main.py", line 54, in main
command.sys_dispatch()
File "D:\opt\python\lib\site-packages\compose\cli\docopt_command.py", line 23, in sys_dispatch
self.dispatch(sys.argv[1:], None)
File "D:\opt\python\lib\site-packages\compose\cli\docopt_command.py", line 26, in dispatch
self.perform_command(*self.parse(argv, global_options))
File "D:\opt\python\lib\site-packages\compose\cli\main.py", line 170, in perform_command
handler(project, command_options)
File "D:\opt\python\lib\site-packages\compose\cli\main.py", line 583, in up
detached=detached
File "D:\opt\python\lib\site-packages\compose\project.py", line 313, in up
detached=detached
File "D:\opt\python\lib\site-packages\compose\service.py", line 404, in execute_convergence_plan
container = self.create_container(do_build=do_build)
File "D:\opt\python\lib\site-packages\compose\service.py", line 303, in create_container
self.ensure_image_exists(do_build=do_build)
File "D:\opt\python\lib\site-packages\compose\service.py", line 326, in ensure_image_exists
self.build()
File "D:\opt\python\lib\site-packages\compose\service.py", line 718, in build
dockerfile=self.options.get('dockerfile', None),
File "D:\opt\python\lib\site-packages\docker\api\build.py", line 48, in build
context = utils.tar(path, exclude=exclude, dockerfile=dockerfile)
File "D:\opt\python\lib\site-packages\docker\utils\utils.py", line 85, in tar
t.add(os.path.join(root, path), arcname=path, recursive=False)
File "D:\opt\python\lib\tarfile.py", line 1998, in add
tarinfo = self.gettarinfo(name, arcname)
File "D:\opt\python\lib\tarfile.py", line 1870, in gettarinfo
statres = os.lstat(name)
WindowsError: [Error 3] Das System kann den angegebenen Pfad nicht finden: 'Q:\\sites\\test\\node_modules\\grunt-contrib-uglify\\node_modules\\maxmin\\node_modules\\pretty-bytes\\node_modules\\meow\\node_modules\\normalize-package-data\\node_modules\\validate-npm-package-license\\node_modules\\spdx-correct\\node_modules\\spdx-license-ids\\spdx-license-ids.json'
ïŒç§ã¯ãã®ãã·ã³ã§1.5.0devã䜿çšããŠããŸããã1.5.0 finalã§ä»ã®ãã·ã³ã§ããŸã£ããåãåé¡ãçºçããŸããïŒã
ããŒãã§ã¯ãWindowsã§ãã¹ãé·ããããªã©ã®åé¡ãçºçããããšããããããŸãããDocker-Composeãnode_modulesãtarã¢ããããããšããŠãããšããäºå®ã¯ã .dockerignore
ãç¡èŠãããŠããããšã瀺ããŠããŸãã
FWIWãdocker-compose 1.5.0devã䜿çšããLinuxïŒUbuntuïŒã§ãŸã åé¡ãçºçããŠãããããWindowsã«éå®ãããŠããªãå¯èœæ§ããããŸãã ãã ããããã¯å®çšŒåãã·ã³äžã«ãããããæå°éã®ãã¹ãã±ãŒã¹ãç°¡åã«ãŸãšããããšã¯ã§ããŸããïŒç§ã®ãã¹ããã·ã³ã§ã¯æ£åžžã«æ©èœããŸãïŒã
ç§ããã®åé¡ãæ±ããŠããŸãã
ãã£ã¬ã¯ããªæ§é ïŒ
docker-compose.yml
web
+ .dockerignore
+ Dockerfile
+ node_modules
+ ...
docker-compose.yaml
web:
build: web
tty: true
ports:
- 8081:5000
Dockerfile
FROM microsoft/aspnet
# Curl, node, npm, bower, grunt
RUN apt-get update && apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup | bash -
RUN apt-get install -y nodejs
RUN npm install -g bower
RUN npm install -g grunt-bower-cli
RUN npm install -g grunt
RUN npm install -g grunt-cli
RUN npm install -g grunt-bower-task
# Copy the project.json file first, then do a restore.
# This ensures that as long as project.json doesn't change, it will avoid
# doing a package restore
COPY project.json /app/
COPY bower.json /app/
COPY gruntfile.js /app/
COPY package.json /app/
WORKDIR /app
RUN ["dnu", "restore"]
# Then copy the rest of the files
COPY . /app
# Expose the port that the website listens on
EXPOSE 5000
# And start the website
ENTRYPOINT ["dnx", "-p", "project.json", "web"]
.dockerignore
node_modules
çµæïŒ
Pi<strong i="19">@Ricci</strong> MINGW64 /d/proj/Repro
$ docker-compose build
Building web
Traceback (most recent call last):
File "<string>", line 3, in <module>
File "C:\projects\compose\compose\cli\main.py", line 54, in main
File "C:\projects\compose\compose\cli\docopt_command.py", line 23, in sys_dispatch
File "C:\projects\compose\compose\cli\docopt_command.py", line 26, in dispatch
File "C:\projects\compose\compose\cli\main.py", line 171, in perform_command
File "C:\projects\compose\compose\cli\main.py", line 192, in build
File "C:\projects\compose\compose\project.py", line 235, in build
File "C:\projects\compose\compose\service.py", line 683, in build
File "c:\projects\compose\venv\lib\site-packages\docker\api\build.py", line 48, in build
File "c:\projects\compose\venv\lib\site-packages\docker\utils\utils.py", line 85, in tar
File "c:\python27-x64\Lib\tarfile.py", line 2000, in add
File "c:\python27-x64\Lib\tarfile.py", line 1872, in gettarinfo
WindowsError: [Error 3] The system cannot find the path specified: 'D:\\proj\\Repro\\web\\node_modules\\babel-preset-react\\node_modules\\babel-plugin-transform-react-jsx\\node_modules\\babel-helper-builder-react-jsx\\node_modules\\babel-types\\node_modules\\babel-traverse\\node_modules\\babel-code-frame\\node_modules\\js-tokens\\changelog.md'
docker-compose returned -1
+1
誰ããåé¿çãèŠã€ããŸãããïŒ Dockerfileã ãã§ãã¹ãŠãããããšããŠããŸããããŸã éããããŸããã
ãã®åé¡ãçºçããŠããŸããã誰ããå®è¡ããŠããããŒãã®ããŒãžã§ã³ã«é¢é£ããŠããå¯èœæ§ããããŸããïŒ ãã®åé¡ãä»ããŠïŒ https ïŒ
ç¹°ãè¿ããŸãããããã¯æããã«ç¡èŠãããŠããŸãããLinuxãã·ã³ã§ããããèŠãããŸãã
docker-composeãã¡ã€ã«ã®äžèŠãªããªã¥ãŒã åç §ãåé€ããããšã§ããã®åé¡ãä¿®æ£ããŸããã Composeã¯ãããªã¥ãŒã ã®.gitignoreãç¡èŠããŸãã
ãŸããnpm 3+ã䜿çšããããã«ã¢ããªãã¢ããã°ã¬ãŒãããå¿ èŠããããŸããããããã¯WindowsãŠãŒã¶ãŒã«ã®ã¿é©çšãããå¯èœæ§ããããŸãã
@ esc-rtn .dockerignore
ãã¡ã€ã«ã¯ã_build_äžã«ããŒã¢ã³ã«éä¿¡ããŠã¯ãªããªããã¡ã€ã«ã®ã¿ãæå®ããŸãã ãå®è¡ãäžã«ãã€ã³ãããŠã³ããããããªã¥ãŒã ã䜿çšããŠããå Žåã¯ããã®å Žæã«ãããã¹ãŠã®ãã¡ã€ã«ãããªã¥ãŒã ãšããŠããŠã³ãããã ãã§ãïŒãã¹ãäžã«ååšãããã¹ãŠã®ãã¡ã€ã«ïŒã
Windowsã§ãåæ§ã®ããšãããããŸãã docker build
ã¯æåŸ
ã©ããã«æ©èœããŸããã docker-compose
ã¯æ©èœããŸããã
README.mdã«ã¡ã¢ãä»ããŠGitHubã«å°ããªäŸãèŒããŸããïŒ https ïŒ
Compsoe 1.5.2ããªãªãŒã¹ãããåŸã .dockerignore
ã®ä¿®æ£ã®å¥ã®ã©ãŠã³ããdocker-pyã«å
¥ããŸããã Compose 1.6.0 RC2ãªãªãŒã¹ãè©ŠããŠãçŸåšä¿®æ£ãããŠãããã©ããã確èªã§ããŸããïŒ
docker-composeããŒãžã§ã³1.6.0rc2ããã«ãa7636beã§è©ŠããŠã¿ãŸããã
ãªããžããªã«3ã€ã®ãã¹ãã±ãŒã¹ãããã1.5.2ã§2ã€ã倱æããŸããã 1.6.0rc2ã§ã¯ã次ã®ããã«ããã£ã¬ã¯ããªãšãã®ãã£ã¬ã¯ããªå ã®ãã¡ã€ã«ãé€å€ãããšã1ã€ã ãã倱æããŸãã
$ cat .dockerignore
files/test_dir
!files/test_dir/should_be_here_maybe
ãã®å Žåã docker build
ãšdocker-compose build
éã§åãåäœãçºçããŸãã
.dockerignore
ïŒ
files/test_dir
!files/test_dir/should_be_here_maybe
docker-compose.yml
ïŒ
test:
build: .
Dockerfile
ïŒ
FROM busybox
COPY . /context
CMD ["find", "/context"]
$ docker version
Client:
Version: 1.10.0-rc1
API version: 1.22
Go version: go1.5.3
Git commit: 677c593
Built: Fri Jan 15 18:17:17 2016
OS/Arch: darwin/amd64
Server:
Version: 1.10.0-rc1
API version: 1.22
Go version: go1.5.3
Git commit: 677c593
Built: Fri Jan 15 18:17:17 2016
OS/Arch: linux/amd64
$ docker-compose version
docker-compose version 1.6.0rc2, build 695c692
docker-py version: 1.7.0-rc3
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014
$ mkdir -p files/test_dir
$ touch files/test_dir/should_be_here_maybe
$ find .
.
./.dockerignore
./docker-compose.yml
./Dockerfile
./files
./files/test_dir
./files/test_dir/should_be_here_maybe
$ docker build --no-cache -t 1607-docker-build .
Sending build context to Docker daemon 5.12 kB
Step 1 : FROM busybox
---> 0cb40641836c
Step 2 : COPY . /context
---> 859e12600100
Removing intermediate container 9067b263098b
Step 3 : CMD find /context
---> Running in 1ddc0a573492
---> b1b3beacf5f2
Removing intermediate container 1ddc0a573492
Successfully built b1b3beacf5f2
$ docker run 1607-docker-build
/context
/context/docker-compose.yml
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/.dockerignore
$ docker-compose build --no-cache
Building test
Step 1 : FROM busybox
---> 0cb40641836c
Step 2 : COPY . /context
---> d86507051d6d
Removing intermediate container 0af2cbf69b17
Step 3 : CMD find /context
---> Running in 8533dae3af74
---> 1f736ecb2b38
Removing intermediate container 8533dae3af74
Successfully built 1f736ecb2b38
$ docker-compose run test
/context
/context/docker-compose.yml
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/.dockerignore
ããã«ã¡ã¯@aanand ãããªãã®å¿çã«æè¬ããŸããç§ã¯ããªããããªãã®ã¹ãããã«åŸãã®ãšåãçµæãåŸãã
ãã ãã以åã«å®è¡ãããã¹ãã§ã¯ãfiles / test_dirã«å¥ã®ãã¡ã€ã«ãååšããŠããŸããã å¥ã®ãã¡ã€ã«ãfiles / test_dirã«è¿œå ãããšãïŒäºæ³ã©ããïŒ docker build
ã«ã¯ååšããŸãããã docker-compose
ã«ã¯ååšããŸãã
$ touch files/test_dir/should_not_be_here
$ docker build --no-cache -t 1607-docker-build .
Sending build context to Docker daemon 5.12 kB
Step 1 : FROM busybox
---> b175bcb79023
Step 2 : COPY . /context
---> a23d9645c21c
Removing intermediate container 8eb2bb23c4db
Step 3 : CMD find /context
---> Running in d9fef847acd8
---> e52ae84b1250
Removing intermediate container d9fef847acd8
Successfully built e52ae84b1250
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
$ docker run --rm 1607-docker-build
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/docker-compose.yml
/context/.dockerignore
$ docker-compose build --no-cache
Building test
Step 1 : FROM busybox
---> b175bcb79023
Step 2 : COPY . /context
---> 9df0cf4bfb69
Removing intermediate container 7820f982d59e
Step 3 : CMD find /context
---> Running in 06e1a0b89a45
---> 2c922dbc66d9
Removing intermediate container 06e1a0b89a45
Successfully built 2c922dbc66d9
$ docker-compose run test
ERROR: Interactive mode is not yet supported on Windows.
Please pass the -d flag when using `docker-compose run`.
$ docker-compose run -d test
dcitest_test_run_2
$ docker logs dcitest_test_run_2
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_not_be_here
/context/files/test_dir/should_be_here_maybe
/context/docker-compose.yml
/context/.dockerignore
ããã¯WindowsïŒç§ã®ã·ã§ã«ãšããŠgit bashã䜿çšïŒã§ãããDocker compose 1.5.2ãš1.6.0rc2ãdocker1.9.1ã®äž¡æ¹ã§ãã§ãã¯ãããŠããŸãã
docker-compose1.5.2ãšdocker1.9.1ã䜿çšããŠUbuntu14.04ã§åãããã«å®è¡ããŠãåé¡ãããŸããã
# cat .dockerignore
files/test_dir
!files/test_dir/should_be_here_maybe
# find .
.
./.dockerignore
./docker-compose.yml
./files
./files/test_dir
./files/test_dir/should_not_be_here
./files/test_dir/should_be_here_maybe
./Dockerfile
# docker-compose build --no-cache
Building test
Step 1 : FROM busybox
---> b175bcb79023
Step 2 : COPY . /context
---> c533a0768d5e
Removing intermediate container 0c057fe8eb82
Step 3 : CMD find /context
---> Running in e8a0cf1f58d8
---> 175777486a25
Removing intermediate container e8a0cf1f58d8
Successfully built 175777486a25
# docker-compose run test
/context
/context/docker-compose.yml
/context/.dockerignore
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/Dockerfile
ååŸã®ã»ãšãã©ã¯ãŸã ããã«å¯ŸåŠããŠããŸãã
DockerããŒãžã§ã³1.10.1ããã«ã9e83765
docker-composeããŒãžã§ã³1.6.0ããã«ãd99cad6
#docker-compose.yml
test:
build: ./cdn
#Dockerfile
FROM busybox
COPY ["content/","/test/"]
RUN find /test/ -maxdepth 1
#.dockerignore
**/.DS_Store
**/.git
**/.bowerrc
**/bower_components
**/node_modules
**/npm-debug.log
åºåã¯docker build .
æåŸ
ã©ããã§ã
docker-compose build --no-cache test
ããã¹ãŠã«ã³ããŒãããŸãã
.dockerignore
ä¿®æ£ãããã€ããããŸãã@ shin-ã«æè¬ããŸãããæ®å¿µãªãããDocker Toolbox forWindowsã®docker-compose1.6.2ã§ã¯ãŸã ç°ãªãåäœãèŠãããŸãã
$ docker-compose --version
docker-compose version 1.6.2, build e80fc83
$ find .
.
./.dockerignore
./docker-compose.yml
./Dockerfile
./files
./files/test_dir
./files/test_dir/should_be_here_maybe
./files/test_dir/should_not_be_here
$ cat .dockerignore
files/test_dir
!files/test_dir/should_be_here_maybe
$ docker-compose build --no-cache
Building test
Step 1 : FROM busybox
latest: Pulling from library/busybox
f810322bba2c: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:97473e34e311e6c1b3f61f2a721d038d1e5eef17d98d1353a513007cf46ca6bd
Status: Downloaded newer image for busybox:latest
---> 3240943c9ea3
Step 2 : COPY . /context
---> 85a65d7f861c
Removing intermediate container 386d3103d8ab
Step 3 : CMD find /context
---> Running in e5e29b5746c4
---> 2c2d57a899ea
Removing intermediate container e5e29b5746c4
Successfully built 2c2d57a899ea
$ docker-compose run -d test
dcitest_test_run_1
$ docker logs dcitest_test_run_1
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/files/test_dir/should_not_be_here
/context/.dockerignore
/context/docker-compose.yml
ããã¯éåžžã«å¥åŠã§ãã ããã¯ééããªãç§ã®ããã«åããŸãã
$ docker-compose build --no-cache
Building web
Step 1 : FROM busybox
---> 3240943c9ea3
Step 2 : COPY . /context
---> 3619871879ad
Removing intermediate container 08432f688579
Step 3 : CMD find /context
---> Running in 5bbcf987c9e7
---> cf2bff2c1416
Removing intermediate container 5bbcf987c9e7
Successfully built cf2bff2c1416
$ docker-compose run -d web
Creating network "testdockerignore_default" with the default driver
testdockerignore_web_run_1
$ docker logs testdockerignore_web_run_1
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here
/context/docker-compose.yml
/context/.dockerignore
$ find .
.
./Dockerfile
./files
./files/test_dir
./files/test_dir/should_not_be_here
./files/test_dir/should_be_here
./docker-compose.yml
./.dockerignore
$ cat .dockerignore files/test_dir
!files/test_dir/should_be_here
ã䜿çšã®ç°å¢ã§ã®pip show docker-py
ã®åºåã¯äœã§ããïŒ
ç§ãåãåé¡ãæ±ããŠãããšæããŸãã
Docker build .
ç§ã®ããã«åããŸãã ãã ããåããã«ããdocker-compose.ymlãã¡ã€ã«ã§å²ããšããã«ããå£ããŸãã .dockerignoreãã¡ã€ã«ã§ãããŒããã«ãã®node_modulesãã£ã¬ã¯ããªãé€å€ããŠããŸãã ããã¯ç§ã®docker-compose.ymlã®é¢é£ã»ã¯ã·ã§ã³ã§ãïŒ
web:
build: ./app
ports:
- "8080:8080"
links:
- mongodb
docker-composeã®ææ°ããŒãžã§ã³ãå®è¡ããŠãããšæããŸãã
>docker-compose version
docker-compose version 1.6.2, build e80fc83
docker-py version: 1.7.2
CPython version: 2.7.11
OpenSSL version: OpenSSL 1.0.2d 9 Jul 2015
ç§ã¯Windows10ãx64ãå®è¡ããŠããŸãã
Windowsåºæã®åé¡ããããããã¹ã»ãã¬ãŒã¿ãŒã«é¢ããåé¡ã§ããïŒ
ããããã¹ã»ãã¬ãŒã¿ã«é¢é£ããŠãããã©ãããèŠåããæ¹æ³ãããããŸããã
ãã¹ããªã©ãæ¯æŽã§ãããã©ããæããŠãã ããã çŸåšããã«ãåã«ãç¡èŠãããããã©ã«ãããããžã§ã¯ããã£ã¬ã¯ããªãã移åããããããã¡ã€ã«ããããŸãããæããã«éãã§ãã
ãååããã ãããããšãããããŸãã
å®å šãæãããã«ãããã¯ç§ã®.dockerignoreãã¡ã€ã«ã§ãã
**/node_modules
ãã¯ã¯ïŒ åé¡ãåŒãèµ·ãããŠããã®ã¯ã°ãããã¿ãŒã³ã§ãã ã** /ããåé€ãããšãåé¡ãä¿®æ£ãããŸããã
ç¹å®ã®åé¡ã®åé¿çã¯ãããŸããããã°ããããšããäºå®ã¯å€ãããŸããã å°ãªããšãglobãã¿ãŒã³** /ã¯docker-composeã§é©åã«è§£æãããŸããããéåžžã®dockerbuildã³ãã³ãã§ã¯æ£åžžã«æ©èœããŸãã ä»ã®ã°ãããã¿ãŒã³ã¯æ©èœããå Žåãšæ©èœããªãå ŽåããããŸãã
@bfirshãšæ°ã«ãªããããããªãä»ã®ãã¹ãŠã®äººïŒ
ç§ã¯ãã®ããã«èŠãã絶察ã«åçŽãª.dockerignoreãæã£ãŠããŸãïŒ
livedata
readonly-data
.dockerignoreãæ©èœããïŒãã«ãã³ã³ããã¹ããã©ã«ããŒå ã®2ã€ã®ãã©ã«ããŒãããŒã¢ã³ã«ã¢ããããŒãããã_forever_ããããŸãïŒã Linuxã䜿çšããŠããŸãã çŸåšã®1.6.2ã«æŽæ°ããŸããããå€æŽã¯ãããŸããã åãçç¶ã§å¥ã®åé¡ãçºçããªãéããããã¯Windowsåºæã®åé¡ã§ã¯ãªãããã«æãããããšãããäžåºŠç¹°ãè¿ããŸãã
+ 1ãLinuxã§ãå£ããŠããŸã-Windowsåºæã®åé¡ã ãšã¯æããªãã§ãã ããã
@JonasT @nicbarker .dockerignore
ã§æå®ããããã©ã«ããã¢ããããŒããããŠããããšããæéãããããšããäºå®ãé€ããŠãã©ã®ããã«ç¢ºèªããŠããŸããïŒ tarballããã§ãã¯ããæ¹æ³ãããã°ãããã䜿çšããŠåé¡ãããŒã«ã«ã§åçŸããŠã¿ãããšæããŸãã çŸç¶ã§ã¯ãdocker-pyã«ãããã°ãè¿œå ããŸãããããŸã åçŸã§ããŸããã
$ pip list | grep docker
docker-compose (1.7.0.dev0, /Users/aanand/work/docker/compose)
docker-py (1.8.0rc2, /Users/aanand/work/docker/docker-py)
$ find .
.
./.dockerignore
./docker-compose.yml
./Dockerfile
./include.txt
./livedata
./livedata/exclude.txt
./readonly-data
./readonly-data/exclude.txt
$ cat .dockerignore
livedata
readonly-data
$ cat Dockerfile
FROM busybox
COPY . /data
$ docker-compose --verbose build --no-cache
<unrelated output>
docker.utils.utils.tar: Writing tar file to <open file '<fdopen>', mode 'w+b' at 0x1090f26f0>
docker.utils.utils.tar: Adding .dockerignore
docker.utils.utils.tar: Adding Dockerfile
docker.utils.utils.tar: Adding docker-compose.yml
docker.utils.utils.tar: Adding include.txt
docker.utils.utils.tar: Done
<unrelated output>
@aanandèµ·åãããŸã§ã«éåžžã«é·ãæéãããããŸãããŸããDockerfileã./contextã«ç§»åããä»ã®å€æŽãå ããã«ãbuildïŒ./ context /ãã䜿çšãããšãç¬æã«éåžžã«é«éã«ãªããŸãã ãŸãããã®åé¡ãæåã«çºçãããšãããdockerbuildãã䜿çšããŠæåã§docker buildãè©ŠããŸãããããããç¬æã§ããã
ããã¯å®éã«ã¯åé¡ã確èªããŠããŸããã ãããžã§ã¯ãã«ãŒãã«å¥ã®å€§ããªãã£ã¬ã¯ããªãããå Žåã¯ããã«ãã./context
ã«ç§»åãããšé«éã«ãªããŸãã
@dnephinã«ã¯ãåé¿çãšããŠè¿œå ãããã³ã³ããã¹ããèªäœãš3ã€ã®å°ããªããã¹ããã¡ã€ã«ãé€ããŠãä»ã®ãã©ã«ãã¯ãããŸããã
@JonasTå«ãŸããŠãã倧ããª.git
ãã£ã¬ã¯ããªãããå¯èœæ§ã¯ãããŸããïŒ
ç·šéïŒNVMãééã£ãrsync'ed
ã³ããŒããã§ãã¯ããã®ã§ããã£ã¬ã¯ããªãèŠéãã»ã©æãã ã£ãããã§ã>ã>ããããªããã
ç§ã¯å®éã«ããã«ã€ããŠãã°ããåã«åé¡ãæ±ããŠããŸãããã以åã®docker-composeããŒãžã§ã³ã§ããæ·±ã調æ»ããŸããããæè¿ã®dockerpyã¢ããããŒãã®ããã€ãã§å®éã«ä¿®æ£ãããç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ããã£ãå¯èœæ§ããããŸãã
ãããWindowsã®åé¡ã§ããããšã«æ»ããŸããïŒ :)
ããã«ã¡ã¯ã
ç§ã¯Linuxãcompose 1.6.2ãdocker 1.10.3 ...ãŸã£ããåãåé¡ãæ±ããŠããŸãã dockerã¯.dockerignore
ãcomposeã¯ãããç¡èŠããŸãã
@ulrichSchreineråçŸããæé ãæããŠãã ããã
ããã«ã¡ã¯ã
ããã«èŠç¹ããããŸãïŒhttps://gist.github.com/ulrichSchreiner/566815cea26ce55b95207e7795cf6962ïŒã .dockerignore
ã¯**/node_modules
.dockerignore
ãå«ãŸããDockerfileã¯t1/a/b/c/node_modules
ãµããã©ã«ããŒã«ãã¡ã€ã«ãè¿œå ããŸãã
ããããdockerbuild ...ãã§ãã«ããããšãè¿œå ãããã¡ã€ã«ããªããããšã©ãŒãçºçããŸãïŒ .dockerignore
ã®ãã¿ãŒã³ã®ãããæ£ããç¡èŠãããŸãïŒã èŠæšã®æåŸã®ãã¡ã€ã«ã§åºåã確èªã§ããŸãã
ãã ããæå®ããããdocker-compose.ymlãã䜿çšããŠãã«ããããšãæ£åžžã«ãã«ããããŸã-> docker-composeã¯.dockerignore
ãã¡ã€ã«ãç¡èŠããŸãã
node_modules
ãã£ã¬ã¯ããªãæ°çŸã¡ã¬ãã€ãã®å Žåãããã¯æ¬åœã«èŠçã§ã...ã
ç§ã䜿ã
docker-compose version 1.6.2, build 4d72027
OKããããåçŸã§ããŸãã docker-pyã«ã¯ãããã**/
ã«ãŒã«ã®ãã°ãããããã§ãã
IIRCã **
æ§æã®ãµããŒãã®æ¬ åŠã¯ã .dockerignore
å®è£
ã®æ¢ç¥ã®å¶éã§ãã https://github.com/docker/docker-py/pull/721#issuecomment-135065043ãåç
§ããŠ
ããã§åãåé¡ã docker-composeã§äœ¿çšããå Žåã .dockerignore
ã¯ç¡èŠãããŸã
docker-compose version 1.6.2, build 4d72027
OSX
./.dockerignore
./Dockerfile (symlink to ./server/docker/cms/Dockerfile)
./server/docker/docker-compose.yml
.dockerignoreã®å 容
./.git
./.vagrant
.vagrantã¯16GBãªã®ã§ãããã¯ç§ãã¡ã«ãšã£ãŠãBigDealïŒtmïŒãã§ãã
ããããªããã
docker-machine version 0.7.0, build a650a40
docker-compose version 1.7.0, build 0d7bf73
docker-py version: 1.8.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014
Client:
Version: 1.11.1
API version: 1.23
Go version: go1.5.4
Git commit: 5604cbe
Built: Tue Apr 26 23:44:17 2016
OS/Arch: darwin/amd64
Server:
Version: 1.11.1
API version: 1.23
Go version: go1.5.4
Git commit: 5604cbe
Built: Wed Apr 27 00:34:20 2016
OS/Arch: linux/amd64
@lattwoodãã°ã®ããã ä»ã®ãšããããã¿ãŒã³ããå
é ã®./
ãåé€ãããšãæ©èœããã¯ãã§ãã
ããããšãïŒ
Ubuntu 14.04ã§å®è¡ããŠããå Žåãç§ã®dockerignoreã¯åã«**/always_restart.txt
ã§ãã éåžžã®docker build
ïŒv1.11.2ïŒã§ã¯ãã³ã³ãããŒå
ã«ãã¡ã€ã«ã衚瀺ãããŸããããComposeïŒv1.7.1ïŒã§ã¯è¡šç€ºãããŸãã
Edit1ïŒ docker-py
ã¯äºéã¢ã¹ã¿ãªã¹ã¯è¡šèšããã¹ãããŠããªãããã§ããããããããåŠçããªããšæããŸãïŒ https ïŒ
Edit2ïŒãã¿ãŒã³*/tmp/always_restart.txt
䜿çšã¯Composeã§æ©èœããããã **
ãã¿ãŒã³ã¯ç¹ã«ç¡èŠãããŸã
@ agilgur5æ£è§£ã§ããããã¯ã https://github.com/docker/docker-py/issues/1117ãäœæããŸããã
DOCKERFILEã§ã®éãåé¿çïŒ
解æã«git-check-ignoreã䜿çšããŠïŒãããã£ãŠgit init
ãå¿
èŠïŒãã³ããŒåŸã«ç¡èŠããå¿
èŠããããã®ããã¹ãŠåé€ããŸãã
çµå±ã®ãšããCOPY
sïŒãŸãã¯ADD
sïŒã§ãªããã°ãªããªãã£ãç§ãã¡ã®å Žåãããã§ãªããã°äžèŠãªãã¡ã€ã«ãåã³ååŸããããšã«æ³šæããŠãã ããã
RUN mkdir /app/
WORKDIR /app/
# ...
# all the COPYs
# ...
RUN git init
COPY ./.dockerignore /app/
RUN mv .dockerignore .gitignore
RUN DEL_ME=$(find . -print0 | xargs -0) && echo Forcing deletion of .dockerignore files && git check-ignore --no-index $DEL_ME > tmp.txt
RUN DEL_ME=$(cat tmp.txt | xargs) && echo DELETING: $DEL_ME tmp.txt && rm -f -d -r $DEL_ME tmp.txt
.gitignoreãããã¡ã€ã«ãåé€ããããïŒçç±ã¯ãããŸããïŒ
COPY ./.gitignore /app/
COPY ./.dockerignore /app/
RUN DEL_ME=$(find . -print0 | xargs -0) && echo gitignore && git check-ignore --no-index $DEL_ME > tmp.txt
RUN rm .gitignore && mv .dockerignore .gitignore
RUN DEL_ME=$(find . -print0 | xargs -0) && echo dockerignore && git check-ignore --no-index $DEL_ME >> tmp.txt
RUN DEL_ME=$(cat tmp.txt | xargs) && echo DELETING: DEL_ME tmp.txt && rm -f -d -r $DEL_ME tmp.txt
docker-compose.yml
ããŒã¿ããªã¥ãŒã ã䜿çšããåºæ¬çã«äžæžãããããªãã³ã³ãããã£ã¬ã¯ããªãäžèŠ§è¡šç€ºããããšã§ããã®åé¿çãèŠã€ãããšæããŸãã ãã®å Žåãã³ã³ããå
ã®node_modules
ãã£ã¬ã¯ããªãä¿æããããšæããŸããã
ãããã£ãŠã docker-compose.yml
ã¯æ¬¡ã®ããã«ãªããŸãã
my_app:
build: ./my_app
volumes:
- ./my_app:/app
# prevent the mounting above from overwriting the following
- /app/node_modules
volumes
å€ã¯ã .dockerignore
ãã®ãšéè€ããŸãããä»ã®ãšããã¯ããŸããããŸã...
ãã®åé¡ã«ã€ããŠã®é«ã¬ãã«ã®ææ¡ããããŸãã
ãã®åé¡ã®ã¿ã€ãã«ãã[ã¡ã¿åé¡] ïŒ. dockerignoreã«ãŒã«ã®èª€ã£ãåŠçãïŒãŸãã¯ã[远跡åé¡]ïŒèª€ã£ãåŠç...ãïŒã®ããã«å€æŽããããåã«ã³ã¬ã¯ã·ã§ã³ãåªå
ããŠãã®åé¡ãéããããšããå§ãããŸããããå°ãããããå®çšçãªåé¡ã®ã ããã¯ãïŒ1ïŒDockercomposeã.dockerignore
ãã¡ã€ã«ããç¡èŠãããŠããããã§ã¯ãªãããã§ãïŒããã¯ãåé¡ã®ã¿ã€ãã«ãçŸåšèšã£ãŠããããšã§ãïŒã ã«ãŒã«ãæ£ããå®è£
ãããŠããªãã ãã§ãã ãããŠïŒ2ïŒããã®åé¡ã«ã¯ããã€ãã®éšåããããŸãã ããã¯1ã€ã®åé¡ã ãã§ã¯ãããŸããã ããšãã°ãããïŒ **
åŠçïŒãšç§ãæåºããã°ããã®ãã®æ°ãããã®ïŒæçµè¡ã®åªå
é äœïŒããããŸãã ãããŠããã£ãšãããããããããããŸããã
ãã®åé¡ã®ã¹ã¬ããã¯éåžžã«é·ãããïŒåºãåé¡é åãã«ããŒããŠããããïŒã解決ããå¿ èŠã®ããåã ã®åé¡ãã¹ã¬ããå ã§èŠã€ããã®ã¯å°é£ã§ãã äžè¬çãªã.dockerignoreãæ©èœããªãããã§ããã®åé¡ãšã¯å¯Ÿç §çã«ãç§ã¯ãåç¬ã§è§£æ±ºã§ããæ確ã«å®çŸ©ãããåé¡ãæåºããããšãææ¡ããŠããŸãã çŸåšè¿°ã¹ãããŠããããã«ãPythonå®è£ ããªãã¡ã¬ã³ã¹å®è£ ãšåçã«ãªãããšã¯ãªãããããã®åé¡ã¯è§£æ±ºãããªãå¯èœæ§ããããŸãã
**/**/node_modules
ã䜿çšããŸãããããããæ©èœããŠããªãããšãããããŸããã ããã§ããã®ãã°ãä¿®æ£ããããã«ããµããããžã§ã¯ãã®ånode_modulesãã£ã¬ã¯ããªãå®çŸ©ããŸããã
ãã®ä¿®æ£ããã°ã©ã ã®åã¯ãnpmã®äŸåé¢ä¿ããã§ã«ååšããŠãããããã€ã³ã¹ããŒã«æã«ãã¢ã¯ã»ã¹æš©ãšã©ãŒããçºçããŠããŸããïŒdockerignoreãã¡ã€ã«ãæ©èœããŠããªãç¶æ ã§ã³ããŒããããšãåå ã§ãïŒã
åãåé¡ã
macOS Sierra 10.12.2
DockerããŒãžã§ã³1.12.5ããã«ã7392c3b
docker-composeããŒãžã§ã³1.9.0ããã«ã2585387
**
ãã¿ãŒã³ã®åé¡ã¯1.11.2ã§ä¿®æ£ãããã¯ãã§ã
ïŒ3931ãšïŒ3886ã§å¥ã
ã«è¿œè·¡ããããæåªå
ã®åé¡ã®ãããªæªè§£æ±ºã®åé¡ãèããããŸãã ä»åŸã®ã¢ããããŒãã«ã€ããŠã¯ãããããåç
§ããŠãã ããã
docker-composeã.dockerignore
ç¡èŠããŠããã®ãããããšãæ£ãã解éã§ããªãã®ããããããŸããïŒdockerãæ£åžžã«æ©èœããå Žåãšã¯ç°ãªããŸãïŒã ããã¯ç§ãããã«çéžããæ¹æ³ã§ãïŒ http ïŒ
ãããç§ã®.dockerignore
ãã¡ã€ã«ã§ãïŒåé¡ãäœã§ããããèŠã€ããããšãã§ããå Žåã«åããŠïŒïŒ
$ cat .dockerignore
*
!www
!app
!inc
*/node_modules
*/bower_components
**/*.log
**/Dockerfile
**/.gitignore
ç§ã®docker-compose build
ã¯.dockerignore
ãã¡ã€ã«ãå®å
šã«ç¡èŠããŠããããã§ãã
docker build
ã¯æåŸ
ã©ããã«æ©èœããŸãã
$ docker-compose version
docker-compose version 1.14.0, build c7bdf9e
docker-py version: 2.3.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
ç§ã®.dockerignore
ã¯æ¬¡ã®ããã«ãªããŸã
.bundle
.git
.gitignore
test
tmp
log
ããã§ã¯ç¹å¥ãªããšã¯äœããããŸããã
Ubuntu 16.04ã䜿çšããŠããŸããããããéèŠãã©ããã¯ããããŸããã
ãšããã§ïŒèª°ãã説æã§ããŸããããªãdocker-compose build
ã¯docker build
ãšåãã³ãŒãã䜿çšããŠDockerfile
ãªã©ã䜿çšããŠã€ã¡ãŒãžãæ§ç¯ããªãã®ã§ããïŒ æãããªã³ãŒãã®éè€ãããã®ã¯ãªãã§ããïŒãã®åé¡ã瀺ãããã«ãããã¯å®éã«ã¯ããŸãæ©èœããŸããïŒïŒ
ãã®åé¡ã解決ãããã®ã¯ãªãã§ããããŸããã©ã®ããã«åéããŸããã ãœãããŠã§ã¢ã¯æããã«å£ããŠãããä¿®æ£ããå¿ èŠããããŸã
ããã ã·ã³ããããšãã ããã察åŠãããããšãããããæããŸã
ææ¡ãããããã«åé¡ïŒ3931ãšïŒ3886ãèªã¿ãŸããããç§ã®.dockerignoreã¯ç¹å¥ã§ã¯ãªããããåé¡ãæ£ç¢ºã«ãããã³ã°ã§ããŸããã§ããã
ç§ã¯ç§ã®ããã«ãŸã£ããåããŸããããããŠããã¯åé¡ã§ã¯ãããŸãããç§ã®.dockerignoreã«äœããããŸããã
ãšãŠãæãã§ãããã¯ç§ã®ééãã§ãããïŒdizzy_faceïŒ
ã³ãŒããããªã¥ãŒã ãšããŠããŠã³ãããã®ã§ãç¡èŠããããã®ããªãããšã¯æããã§ãã ãã®ããã«æ®å¿µã
app:
build: .
container_name: my_app
volumes:
- .:/my_app
ããã¯æªè§£æ±ºã®ããã§ããïŒ
version: '3.4'
services:
ui:
build:
context: ./source/ui
dockerfile: Dockerfile
target: development
command: bash -c "yarn dev"
ports:
- '9091:9091'
- '9092:9092'
expose:
- '9091'
- '9092'
volumes:
- ./source/ui:/app
- node-modules:/app/node_modules
environment:
- PORT=9091
- HMR_PORT=9092
- NODE_ENV=development
- API_HOST=api.docker:7001
volumes:
node-modules:
in source/ui/.dockerignore:
node_modules
è·é¢
`` `
ãããããšã«ããäž¡æ¹ã®ãã©ã«ããäœæãããããšã«ãªããŸã...
ç§ãåãåé¡ãæ±ããŠããŸããã ç§ãå€ãäœæ²ããŒãžã§ã³ã䜿çšããŠããããšã«æ°ä»ãããšãã docker-compose version 1.22.0-rc1, build e7de1bc3
æŽæ°ãããŸããã
åé¡ã¯ãdebian / ubuntuã«å梱ãããŠããcomposeããŒãžã§ã³ãå€ãããããšã§ãã
ä»ã§ã¯ããŸãæ©èœããŸãããããã§ãdocker build
ãšåãã§ã¯ãããŸãã
ããã¯ãŸã 解決ãããŠããŸããã Docker for Macãææ°ããŒãžã§ã³ïŒDocker 18.03.1-ce-mac65ïŒãå®è¡ããŠããŸãã
ç§ã®.dockerignoreïŒ
**/package-lock.json
**/node_modules
ãã ããdocker-composeã䜿çšãããšãäž¡æ¹ãã³ã³ãããŒã«æž¡ãããŸãã
https://github.com/docker/docker-py/pull/2065ã¯1.22.0RC2ã«ãããããã«å¯ŸåŠããå¿ èŠããããŸãã
Docker for MacããŒãžã§ã³18.06.1-ce-mac73 (26764)
ã䜿çšããŠããŸããããã°ã¯ãŸã æ®ã£ãŠããŸãã
ç§ã䜿çšããŠãããã®ïŒ
docker-composeããŒãžã§ã³1.22.0ããã«ãf46880f
DockerããŒãžã§ã³18.06.1-ceããã«ãe68fc7a
Ubuntu 16.04 Xenialããã³docker-composeãã«ãã§å®è¡ãããšã次ã®.dockerignoreãç¡èŠãããŸãã
**/*.jpg
**/*.png
**/*.pyc
**/*.solverstate
**/*.caffemodel
**/*.tgz
**/.pytest_cache
**/*__pycache__*
**/.git
**/node_modules
*.egg-info
.eggs
*Dockerfile*
build
dist
äºéã¢ã¹ã¿ãªã¹ã¯ã解éããããšã«ãªã£ãŠããã®ã§ãäœãåå ãªã®ãããããŸããã åãåé¡ãæ±ããŠãã人ã¯ããŸããïŒ
äºéã¢ã¹ã¿ãªã¹ã¯ã解éããããšã«ãªã£ãŠããã®ã§ãäœãåå ãªã®ãããããŸããã åãåé¡ãæ±ããŠãã人ã¯ããŸããïŒ
åãåé¡ãçºçããŠããŸãïŒ **/.tox
ïŒã
ç§ãåãåé¡ãæ±ããŠããŸããã ç§ã¯ããŸããŸãªã³ã³ããã¹ãã䜿çšããŠããŸãã
docker-compose.ymlã¯ã¢ããªã®ã«ãŒããã¹ã«é
眮ããã次ã®ããã«ãªããŸãã
services:
api:
build:
context: ./docker/api
ç§ã®ãã¡ã€ã«ããªãŒïŒ
- app/
-- docker/
--- api/
---- .dockerignore <- it works!
-- docker-compose.yml
-- .dockerignore <- it does not work for contexts
ããããããïŒ
@ zymtx5g79kããã¯ç§ã®ããã«åããŠããŸããã
- .dockerignore
- docker/
-- development/
--- docker-compose.yml
version: '3'
services:
web:
build:
context: ../../.
@rodrigobdz ã確èªããŠãã ããïŒ
docker-compose.yml ïŒ
services:
api:
build:
context: ./../../
version: '3'
.dockerignore ïŒ
/docker
ãã¡ã€ã«æ§é ïŒ
- docker/
-- api/
--- docker-compose.yml
- .dockerignore
ããã§ãåãçµæã§ãããããšãã°.git
ãã£ã¬ã¯ããªã¯ã³ã³ããå
ã«ãããŸãã ããã«ç§ã®.dockerignoreãæçš¿ããŸãã å€åããèªäœã«ããã€ãã®åé¡ããããŸãã
# Custom
docker-compose.yml
docs/
livereload.js*
yarn-error.log
v8-compile-cache-0
# vim
*.swp
.git
.gitignore
README.md
@rodrigobdzåé¡ãåçŸã§ããŸããïŒdockercomposeããŒãžã§ã³1.22.0ãå®è¡ããŠããŸãïŒã
ãã¹ããæºåããŸãã
mkdir repro-1607 && cd repro-1607
mkdir -p docker/development/
mkdir -p ./.git/this-is-a-git-repo
echo "this is README.md" > README.md
cat > docker/development/docker-compose.yml -<<EOF
version: '3'
services:
web:
build:
context: ../../.
EOF
cat > ./.dockerignore -<<EOF
# Custom
docker-compose.yml
docs/
livereload.js*
yarn-error.log
v8-compile-cache-0
# vim
*.swp
.git
.gitignore
README.md
EOF
cat > Dockerfile -<<EOF
FROM alpine
RUN apk add --no-cache tree
COPY . /foobar/
CMD tree -a /foobar/
EOF
docker-composeã䜿çšããŠãã«ãããŸãã
cd docker/development/
docker-compose build --no-cache
Building web
Step 1/4 : FROM alpine
---> 11cd0b38bc3c
Step 2/4 : RUN apk add --no-cache tree
---> Running in 8767bc07dad9
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tree (1.7.0-r1)
Executing busybox-1.28.4-r0.trigger
OK: 5 MiB in 14 packages
Removing intermediate container 8767bc07dad9
---> 3916d3b689bb
Step 3/4 : COPY . /foobar/
---> 76ab68d75f88
Step 4/4 : CMD tree -a /foobar/
---> Running in 9891624b3cab
Removing intermediate container 9891624b3cab
---> d22b81d149f2
Successfully built d22b81d149f2
Successfully tagged development_web:latest
ãŸããã³ã³ãã³ããè¿œå ãããŠããªãããšã確èªããŠãã ããã
docker run --rm development_web:latest
/foobar/
âââ .dockerignore
âââ Dockerfile
âââ docker
âââ development
âââ docker-compose.yml
2 directories, 3 files
ããã§ã .dockerignore
ååãå€æŽããŠããã«ããåå®è¡ããŸãã
mv ../../.dockerignore ../../.dockerignore.disabled
docker-compose build --no-cache
Building web
Step 1/4 : FROM alpine
....
ã³ã³ãã³ããç¡èŠãããªããªããç»åã«è¿œå ãããããšã確èªããŸãã
docker run --rm development_web:latest
/foobar/
âââ .dockerignore.disabled
âââ .git
â  âââ this-is-a-git-repo
âââ Dockerfile
âââ README.md
âââ docker
âââ development
âââ docker-compose.yml
4 directories, 4 files
ïŒç·šéïŒ -a
tree
ãåããŠå®è¡ããã®ãå¿ãããããæåã®å®è¡ã®åºåãæŽæ°ããŸããïŒ
@thaJeztahãæéã
ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯ã httpsïŒ //github.com/docker/compose/issues/2098#issue-108463351ã§èª¬æãããŠãããã®ãšäŒŒãŠãCOPY
ã³ãã³ãã䜿çšããããã«ããªã¥ãŒã ãšåããã£ã¬ã¯ããªãããŠã³ãããŸãã
https://github.com/docker/compose/issues/2098#issuecomment -143505943ã§èª¬æãããŠããããã«ã .dockerignore
ã®é€å€ãããªã¥ãŒã ã«é©çšãããããšãæåŸ
ããŠããŸããã
ïŒ2098ïŒã³ã¡ã³ãïŒã§èª¬æãããŠããããã«ã.dockerignoreã®é€å€ãããªã¥ãŒã ã«é©çšãããããšãæåŸ ããŠããŸããã
ãããããã¹ãããã®ãã¹ããã€ã³ãããŠã³ãããå Žåãdockerã¯ãã®ãäžéãã«ã¯ãªããŸããã Linuxã§ã¯ãæåéããã³ã³ããå ã®ãã¹ããããã®ãã£ã¬ã¯ããªãããŠã³ãããŸãã Dockerãã¹ã¯ãããïŒDocker for Mac / WindowsïŒã§ã¯ãããŒã¢ã³ïŒããã³ã³ã³ãããŒïŒãå®è¡ãããVMå ã§ãããã®ãã¡ã€ã«ã䜿çšã§ããããã«ããããã®è¿œå ã®ãéæ³ããããã€ããããŸãããåºæ¬çã«ã¯ãã®åŸã®Linuxãšåãããã«æ©èœããŸãã
.dockerignore
ã¯ãã«ãäžã«ã®ã¿äœ¿çšããããã«ãã®é«éåãç®çãšããŠããŸãã ã€ã¡ãŒãžã§äœ¿çšãããŠããªã/äžèŠãªãã¡ã€ã«ãããŒã¢ã³ã«éä¿¡ããå¿
èŠããªãããã«ããããã
説æããŠãããŠããããšãïŒ ã³ãã¥ããã£ã§ã®ãããªã誀解ãé¿ããããã«ããã®èª¬æã¯ããã¥ã¡ã³ãã«å«ããå¿
èŠããããšæããŸãã çŸåšãããã¥ã¡ã³ãã¯.dockerignore
èªäœã®ã¹ã³ãŒãã§ã¯ãªãããã¡ã€ã«ãç¡èŠããæ¹æ³ã«éç¹ã眮ããŠããŸãã
ããã¥ã¡ã³ãã®ãã®ããŒãžã§ã¯ãDockerfileãšdocker build
ã«ã€ããŠèª¬æããŠããŸãã ãã®èŠ³ç¹ãã; ä»ã®ã³ãã³ã/çšéã§ã¯æ©èœããªããšèª¬æããã®ãçã«ããªã£ãŠããã®ã§ã¯ãªãããšèããŠããŸãã
ãŸããããã誀解ã®äžè¬çãªåå ã§ãããæããã«ããã§ããã°ãããã«èšåããããšã¯ç¢ºãã«çã«ããªã£ãŠããŸãã
ããã¥ã¡ã³ãå ã®1ã€ã®æã§ã @ thaJeztahãšã以äžã®ãã¹ãŠã®ãŠãŒã¶ãŒã®æéãå€§å¹ ã«ç¯çŽã§ãã
ãŠãŒã¶ãŒãçŸåšã®ããã¥ã¡ã³ãã誀解ããŠãã
ãã®åé¡ã+1ãããã£ãã ãã§ãã
docker-coposeïŒ1.23.2ãå®è¡ããŠããŸãïŒHomebrewãšPIPã®éã§èŠã€ããææ°ã®ãã®ïŒ
OSïŒMac OS 10.14.2
ãã«ãäžã¯ãŸã ç§ã®.dockerfileãç¡èŠããŠããŸãã ãã®éã«æ瀺çã«ç©äºãã³ããŒããå¿ èŠããããŸãã
docker-composeãã¡ã€ã«ã®äžèŠãªããªã¥ãŒã åç §ãåé€ããããšã§ããã®åé¡ãä¿®æ£ããŸããã Composeã¯ãããªã¥ãŒã ã®.gitignoreãç¡èŠããŸãã
ããã§ä¿®æ£ãããŸãã--docker-composeã¯ãããŠã³ããããããªã¥ãŒã å ã®.dockerignoreãã¡ã€ã«ãç¡èŠããŸãã
@xvrqtå é±ãèšå®ãã¡ã€ã«ãé©åã«ã³ããŒãããŠããªããšããã©ã³ãã ãªãšã©ãŒãçºçããããããäœæéãç¡é§ã«ãªããŸããïŒãã«ãããã»ã¹ã¯ãããã³ããŒããã¯ãã§ããã䜿çšãããŠããªã.dockerignoreãã¡ã€ã«ã«ãã£ãŠãããã¯ãããŠããŸããïŒã ããã¯ã¡ãã£ãšä¿¡ããããªãããšã§ãã
ããã匷調ããŠãããŠããããšãã
ããã«ã¡ã¯ïŒ ããã®ç¶æ³ã¯ã©ãã§ããïŒ ããªã¥ãŒã ãå«ãŸãªãéåžžã«åçŽãªdocker-compose.ymlã·ããªãªãçšæããŸãããããªã¢ãŒãgitãªããžããªãããã«ããããšãã«.dockerignore
ååŸã§ããŸããã
https://github.com/LocoDelAssembly/docker-compose-dockerignore
ãã¹ã¿ãŒãã©ã³ãã§çºçããŠãããšã©ãŒã¯äºæ³ãããŸããïŒ ããã©ããã«ãŒã§ã€ã¡ãŒãžããã«ãããŠã¿ã°ä»ããããããdocker-compose.ymlã§äœ¿çšãã以å€ã®è§£æ±ºçã¯ãããŸããïŒ
ããããšã
ããã©ããã«ãŒã§ã€ã¡ãŒãžããã«ãããŠã¿ã°ä»ããããããdocker-compose.ymlã§äœ¿çšãã以å€ã®è§£æ±ºçã¯ãããŸããïŒ
çŸåšã®ããŒãžã§ã³ã®composeãå®è¡ããŠããå Žåã¯ã COMPOSE_DOCKER_CLI_BUILD=1
ïŒããã³DOCKER_BUILDKIT=1
ïŒãªãã·ã§ã³ã䜿çšããŠãdockercomposeã«ãã€ãã£ãã®docker build
䜿çšãããããšãã§ããŸãã
ããªãã®äŸã¯ããã§èª¬æãããŠãããã®ãšã¯ç°ãªãããã«èŠããã®ã§ãæ°ãããã±ãããéãã®ãè¯ããããããŸããïŒãŸã ãã±ããããªãå ŽåïŒ
ããããšã@thaJeztahïŒ COMPOSE_DOCKER_CLI_BUILD=1
ã§åäœããŸããã DOCKER_BUILDKIT=1
ãè¿œå ãããšã倱æããŸãïŒç¡é¢ä¿ã®çç±ã§ïŒã
https://travis-ci.org/LocoDelAssembly/docker-compose-dockerignore/builds/658351109
ããŒããããã¯ããã§å®è¡ãããŠããdockerã®ããŒãžã§ã³ã®ãã°ã ãšæããŸãã docker 18.06ã¯ããªãå€ãïŒãããŠEOLïŒã ãã®ããŒãžã§ã³ã®dockerã«ã¯ããªãåæã®ããŒãžã§ã³ã®BuildKitããããŸããããŸã å®å®ããŠããŸããã§ããã
`` `
=>ãšã©ãŒ[å
éš] docker.io/library/alpine:3.9.50.1sã®ã¡ã¿ããŒã¿ãèªã¿èŸŒã¿ãŸã
218 =>ãšã©ãŒ[1/5] FROM docker.io/library/alpine:3.9.5 0.0s
219 => => docker.io/library/alpine:3.9.50.0sã解決ããŸã
220 ------
221> [å
éš] docker.io/library/alpine:3.9.5ã®ã¡ã¿ããŒã¿ãèªã¿èŸŒã¿ãŸãïŒ
222 ------
223 ------
224> [1/5] FROM docker.io/library/ alpineïŒ3.9.5 ïŒ
225 ------
226ããã³ããšã³ãdockerfile.v0ã§ã®è§£æ±ºã«å€±æããŸããïŒLLBã®ãã«ãã«å€±æããŸããïŒãã£ãã·ã¥ããŒã®ããŒãã«å€±æããŸããïŒdocker.io/library/alpine ïŒ3.9.5ãèŠã€ãããŸãã
ãããããŒããããªãã®ãã©ãã¹ãdockerãã€ã³ã¹ããŒã«ããŠããããã§ãïŒç§ã®é»è©±ããèªãã§ããŸãïŒã ããã¯ãã¬ã€ã³ã¹ããŒã«ãããããŒãžã§ã³ã眮ãæããŸããïŒ ã€ã³ã¹ããŒã«åŸã«docker info
ãšdocker version
ã¹ããããè¿œå ãããšãã€ã³ã¹ããŒã«ããæ£ããïŒ19.03.xïŒããŒãžã§ã³ã®Dockerã衚瀺ãããŸããïŒ
ãã¡ãã¯https://travis-ci.org/LocoDelAssembly/docker-compose-dockerignore/builds/658435194ã§ã
$ docker version
Client: Docker Engine - Community
Version: 19.03.7
API version: 1.40
Go version: go1.12.17
Git commit: 7141c199a2
Built: Wed Mar 4 01:22:36 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.7
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: 7141c199a2
Built: Wed Mar 4 01:21:08 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
docker info
åºåã¯å°ã倧ããã®ã§å«ãŸããŠããŸãããã Server Version: 19.03.7
ã§ãã
$ docker-compose version
docker-compose version 1.26.0-rc1, build 07cab513
docker-py version: 4.2.0
CPython version: 3.7.6
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
ïŒå ±åãããããŒãžã§ã³ã¯ééã£ãŠããŸããããã¯rc2ã§ããããã«ãããã·ã¥ã¯rc2ãšäžèŽããŸãïŒ
$ docker-compose version
docker-compose version 1.25.4, build 8d51620a
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
åé¡ã¯19.03.8ã§ããŸã ååšããŠããŸãã
åé¡ã¯19.03.8ã§ããŸã ååšããŠããŸãã
æ£ããã ãŸãããã¹ããªããžããªãææ°ã®1.25ããã³1.26 docker-composeããŒãžã§ã³ã§æŽæ°ããŸãããããã¹ãŠhttps://github.com/LocoDelAssembly/docker-compose-dockerignoreã§èª¬æãããŠãã
äžã«è²Œãä»ããã®ãšåãçš®é¡ã®æ å ±ãèŠã€ããå Žæã«ãã«ãããŸãïŒ //travis-ci.org/github/LocoDelAssembly/docker-compose-dockerignore/builds/673393656
ãããã§ã¯åãåé¡ãæã£ãŠãã.dockerignore
ã§ä¿¡é Œæ§ã®é«ãæ¹æ³ã§ã¯åäœããŸããdocker-compose
æãåèã«ãªãã³ã¡ã³ã
.dockerignoreã
docker build -t subdir ../
ã®ã«ãdocker-compose build
ã§ã¯æ©èœããªãã®ã¯ãªãã§ããïŒ