If my project structure is like this:
├── compose
│ ├── local
│ │ └── django
│ │ ├── Dockerfile
│ │ ├── celery
│ │ │ ├── beat
│ │ │ │ └── start.sh
│ │ │ └── worker
│ │ │ └── start.sh
│ │ └── start.sh
│ └── production
│ ├── caddy
│ │ ├── Caddyfile
│ │ └── Dockerfile.caddy
│ ├── django
│ │ ├── Dockerfile.django
I am calling from root, $ heroku container:push --recursive
However, build will fail citing COPY fail:
Sending build context to Docker daemon 3.072kB
Step 1/2 : FROM abiosoft/caddy:0.10.6
---> d8ff070e1cee
Step 2/2 : COPY ./compose/production/caddy/Caddyfile /etc/Caddyfile
COPY failed: stat /var/lib/docker/tmp/docker-builder022230374/compose/production/caddy/Caddyfile: no such file or directory
▸ Error: docker build exited with 1
The actual Dockerfile:
FROM abiosoft/caddy:0.10.6
COPY ./compose/production/caddy/Caddyfile /etc/Caddyfile
I have read this similar stackoverflow post: Dockerfile COPY instruction failing?
Per the top answer, I did believe I'm referencing the file explicitly at build.
I guess not. What am I missing?
Related
I have a ROS2 package which is failing to build. I'm following the ROS2 "Setting Up a Robot Simulation (Webots)" tutorial, and when I got to section 6 "Modify the setup.py file", I changed my file like so:
from setuptools import setup
from glob import glob
package_name = 'ad_boxtra'
setup(
name=package_name,
version='0.0.0',
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('launch/*.py')), # include all launch files
('share/' + package_name, glob('resource/*.urdf')), # include all webots-related resource files
('share/' + package_name + '/webots_simulation/worlds', # include desired webots worlds
['worlds/adboxtra_2022_simplified.wbt']),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='redacted',
maintainer_email='redacted',
description="redacted",
license='MIT License',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'my_robot_driver = ad_boxtra.my_robot_driver:main',
],
},
)
I then ran colcon build with debug info from the root of my workspace and got:
user#host:~/my_ws $ colcon build --packages-select ad_boxtra --event-handlers console_direct+
Starting >>> ad_boxtra
running egg_info
writing ../../build/ad_boxtra/ad_boxtra.egg-info/PKG-INFO
writing dependency_links to ../../build/ad_boxtra/ad_boxtra.egg-info/dependency_links.txt
writing entry points to ../../build/ad_boxtra/ad_boxtra.egg-info/entry_points.txt
writing requirements to ../../build/ad_boxtra/ad_boxtra.egg-info/requires.txt
writing top-level names to ../../build/ad_boxtra/ad_boxtra.egg-info/top_level.txt
reading manifest file '../../build/ad_boxtra/ad_boxtra.egg-info/SOURCES.txt'
writing manifest file '../../build/ad_boxtra/ad_boxtra.egg-info/SOURCES.txt'
running build
running build_py
running install
running install_lib
running install_data
error: can't copy 'adboxtra_2022_simplified.wbt': doesn't exist or not a regular file
--- stderr: ad_boxtra
error: can't copy 'adboxtra_2022_simplified.wbt': doesn't exist or not a regular file
---
Failed <<< ad_boxtra [0.63s, exited with code 1]
Summary: 0 packages finished [0.70s]
1 package failed: ad_boxtra
1 package had stderr output: ad_boxtra
---
Failed <<< ad_boxtra [0.62s, exited with code 1]
Summary: 0 packages finished [0.71s]
1 package failed: ad_boxtra
1 package had stderr output: ad_boxtra
Why is this colcon build failing? If it helps, here's my directory tree:
AdBoxtra
├── ad_boxtra
│ ├── __init__.py
│ └── my_robot_driver.py
├── launch
│ └── my_robot_webots.launch.py
├── LICENSE
├── package.xml
├── README.md
├── resource
│ ├── ad_boxtra
│ └── my_robot.urdf
├── setup.cfg
├── setup.py
├── test
│ ├── test_copyright.py
│ ├── test_flake8.py
│ └── test_pep257.py
├── urdf
└── webots_simulation
├── controllers
│ └── arm_sweep
│ └── arm_sweep.py
├── libraries
├── plugins
│ ├── physics
│ ├── remote_controls
│ └── robot_windows
├── protos
└── worlds
└── adboxtra_2022_simplified.wbt
27 directories, 63 files
I did observe that in the install/ directory of my workspace, it seems that share/ad_boxtra/webots_simulation/worlds/ exists, but there's no .wbt files inside it. I don't know why this is though:
$ tree ~/rover_ws/install/ad_boxtra/
/home/redacted/rover_ws/install/ad_boxtra/
├── lib
│ ├── ad_boxtra
│ │ ├── conversationalist
│ │ ├── drive_control_serial
│ │ └── turtle_ad_boxtra
│ └── python3.8
│ └── site-packages
│ ├── ad_boxtra
│ │ ├── conversationalist.py
│ │ ├── drive_control_serial.py
│ │ ├── __init__.py
│ │ ├── my_robot_driver.py
│ │ ├── __pycache__
│ │ │ ├── conversationalist.cpython-38.pyc
│ │ │ ├── drive_control_serial.cpython-38.pyc
│ │ │ ├── __init__.cpython-38.pyc
│ │ │ ├── my_robot_driver.cpython-38.pyc
│ │ │ └── turtle_ad_boxtra.cpython-38.pyc
│ │ └── turtle_ad_boxtra.py
│ └── ad_boxtra-0.0.0-py3.8.egg-info
│ ├── dependency_links.txt
│ ├── entry_points.txt
│ ├── PKG-INFO
│ ├── requires.txt
│ ├── SOURCES.txt
│ ├── top_level.txt
│ └── zip-safe
└── share
├── ad_boxtra
│ ├── drive_control.launch.py
│ ├── hook
│ │ ├── ament_prefix_path.dsv
│ │ ├── ament_prefix_path.ps1
│ │ ├── ament_prefix_path.sh
│ │ ├── pythonpath.dsv
│ │ ├── pythonpath.ps1
│ │ └── pythonpath.sh
│ ├── my_robot.urdf
│ ├── my_robot_webots.launch.py
│ ├── package.bash
│ ├── package.dsv
│ ├── package.ps1
│ ├── package.sh
│ ├── package.xml
│ ├── package.zsh
│ ├── __pycache__
│ │ └── drive_control.launch.cpython-38.pyc
│ └── webots_simulation
│ └── worlds
├── ament_index
│ └── resource_index
│ └── packages
│ └── ad_boxtra
└── colcon-core
└── packages
└── ad_boxtra
18 directories, 38 files
From the Python documentation:
data_files specifies a sequence of (directory, files) pairs in the following way...
You wrote
('share/' + package_name + '/webots_simulation/worlds',['worlds/adboxtra_2022_simplified.wbt']), but it should be ('share/' + package_name + '/webots_simulation/worlds',['adboxtra_2022_simplified.wbt']).
You could check the build folder too. Just delete build and install and try again. It could be that.
OK so I know how to remove class files from all the jars under a dir. But, now I have different layer from a docker image, each layer is a tar file, and in the tar file there are the jar files.
Can I remove the class files from the jar files, packaged in tar files?
$ tree -L 3
.
├── 29e0fb8afe376cb02219c977cba1c9a80cca895f7f17b72c356f3e25a63337b9
│ ├── json
│ ├── layer.tar
│ └── VERSION
├── 3b75d6634da4d4f4932d2affeabb7454dc51ba160c3833b386c34e328da8f0ba
│ ├── amq # <<<<< this layer is extracted already, and you can see all the jars here. Other layers are not
│ │ ├── activemq-all-5.11.0.redhat-630495.jar
│ │ ├── bin
│ │ ├── conf
│ │ ├── data
│ │ ├── docs
│ │ ├── examples
│ │ ├── lib
│ │ ├── LICENSE
│ │ ├── NOTICE
│ │ ├── README.txt
│ │ ├── webapps
│ │ └── webapps-demo
│ ├── json
│ ├── layer.tar
│ ├── temp
│ └── VERSION
├── c1fa0e994b2d29f60fd2a6caecbe1ac3f987d001903523d60e532b6e08b094f0
│ ├── json
│ ├── layer.tar
│ └── VERSION
├── c8c84a6c1be5bdfc8caafd23082fd725e84f1c9cddb98fd56cad3a62544b2a3c.json
├── ef5088f89fbac64d2d5982ba14492227f60db1221f6bfd6290c6364a2a95a7e3
│ ├── json
│ ├── layer.tar
│ └── VERSION
├── manifest.json
├── repositories
└── script.sh # <<<<< the script is here
So you ask me why?
Well, did you hear people talking about log4j recently? :) I am doing this right now: log4j vulnerability check: how to quickly detect if log4j is used, in mavevn/in an image? "mvn dependency:tree" does not give a full picture
If someone can tell me how to remove these classes from jib maven plugin, that's better. They are from a base image and I doubt we could do that, though.
I have the following folder structure:
> tree -L 3
├── pom.xml
├── src
│ ├── main
│ │ ├── java
│ │ └── resources
│ └── test
│ ├── groovy
│ └── resources
I tried to build docker image containing those folders together with files using the following Dockerfile:
FROM jamesdbloom/docker-java8-maven
USER root
RUN mkdir src
ADD ./src/* ./src/
ADD pom.xm
However, the structure in docker image is different. Particularly, I can no longer find main and test folders.
$ tree -L 3
.
├── pom.xml
├── src
│ ├── groovy
│ │ └── com
│ ├── java
│ │ └── com
│ └── resources
│ ├── ext_sample_input.json
│ ├── hist_sample_input.json
│ └── sample_input.json
Why is it so?
From official documentation:
Note: The directory itself is not copied, just its contents.
Change your ADD statement to:
ADD ./src ./src/
This is the tree structure of my project:
.
├── backend-codebase
│ ├── app.js
│ ├── bin
│ │ └── www
│ ├── config.js
│ ├── db
│ │ ├── index.js
│ │ ├── repos
│ │ │ └── todos.js
│ │ └── sql
│ │ ├── index.js
│ │ └── todos
│ ├── dev
│ │ └── postgres
│ ├── index.js
│ ├── package.json
│ ├── public
│ │ ├── images
│ │ ├── javascripts
│ │ └── stylesheets
│ │ └── style.css
│ ├── routes
│ │ ├── api.js
│ │ ├── index.js
│ │ └── users.js
│ ├── scripts
│ │ ├── applyFixtures.js
│ │ ├── dev_entrypoint.sh
│ │ ├── fixtures.json
│ │ └── psql_dump.sql
│ ├── views
│ │ ├── api.ejs
│ │ ├── db.ejs
│ └── yarn.lock
├── dev
│ ├── Dockerfile-node
│ ├── Dockerfile-postgres
│ ├── development.sh
│ ├── docker-compose-common.yml
│ ├── docker-compose-dev.yml
│ └── postgres
│ ├── 12-12-2016_16_58_59.dump
...
I use docker-compose in order to create three containers and orcherstrate everything:
- a node server
- a postgres DB
- a data container for the DB
plus, I created two (and a third one is missing) yaml files under /dev/docker-compose-*.yml. docker-compose-dev extends the common one and should build the images as well as run all the images.
In order to start off everything I tried to launch the following:
$ docker-compose up --file dev/docker-compose-common.yml --file dev/docker-compose-dev.yml
But what I get is this output:
Builds, (re)creates, starts, and attaches to containers for a service.
Unless they are already running, this command also starts any linked services.
The `docker-compose up` command aggregates the output of each container. When
the command exits, all cont
I really don't understand what I'm doing wrong
Silly, silly me.
It was simply the order between the arguments and the command upside-down.
Plus, I can remove the first --file argument, since it is referenced by using the extends yaml key.
docker-compose -f dev/docker-compose-dev.yml up
When run pub serve on Mac, it could not find transformer.dart:
Transformer library "package:observe/transformer.dart" not found
I'm using OSX 10.9, DartEditor 30798.
pub build works fine.
I searched and saw pub build fails if proxy is define. But I'm connecting to network directory without proxy.
Here is the observe package under packages directory, transformer.dart is there:
observe
├── html.dart
├── observe.dart
├── src
│ ├── bind_property.dart
│ ├── change_notifier.dart
│ ├── change_record.dart
│ ├── compound_path_observer.dart
│ ├── dirty_check.dart
│ ├── list_diff.dart
│ ├── list_path_observer.dart
│ ├── metadata.dart
│ ├── microtask.dart
│ ├── observable.dart
│ ├── observable_box.dart
│ ├── observable_list.dart
│ ├── observable_map.dart
│ ├── path_observer.dart
│ └── to_observable.dart
├── transform.dart
└── transformer.dart
I had such problem in the renamed polymer project. After I made new polymer project and copy all logic in created files. The problem was solved.